Определение настраиваемой управляемой службы завершается ошибкой - PullRequest
0 голосов
/ 12 июня 2018

Мы пытаемся разработать специальную управляемую службу Intershop, следуя поваренной книге: https://support.intershop.com/kb/index.php/Display/2329T4 Но при попытке включить службу в Operations для нашей Организации она там не указывается и появляется сообщение журнала предупреждения:

WARN  localhost ES1 appserver0 [Test-Site]  com.intershop.component.service.internal.service.ORMServiceConfigurationBORepositoryImpl [] [Storefront] [8ocH1vmRUp4E1qKOZQQC5FFRtQai9r4QV6dAV1yx] [oBlLAFsfl5kFMqjA-0-00] "oBlLAFsfl5kFMqjA-0-00" Can't load implementation for service definition: cartridge='service_esb', service definition id='ESBServiceDefinition'. 

Вот services.compoment:

<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://www.intershop.de/component/2010">
  <!-- Adapter interface -->
  <contract name="ESBService" class="com.test.service.capi.ESBService" />

  <!-- ServiceDefintion implementation -->
  <implementation name="ESBServiceDefinitionImpl" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />

  <!-- ServiceDefintion instance that has already one adapter added -->
  <instance name="ESBServiceDefinition" with="ESBServiceDefinitionImpl" />

  <!-- Registering the ServiceDefintion instance to the (global) ServiceDefinitionRegistry -->
  <fulfill requirement="serviceDefinition" of="serviceDefinitionRegistry">
    <instance with="ServiceDefinitionRegistry.Entry">
      <fulfill requirement="cartridgeID" value="service_esb" />
      <fulfill requirement="groupID" value="service.group.name.test" />
      <fulfill requirement="parameterGroupID" value="ESBParameters" />
      <fulfill requirement="serviceDefinitionID" value="esbService" />
      <fulfill requirement="localizationKeyForName" value="service.definition.name.esbService" />
      <fulfill requirement="serviceDefinition" with="ESBServiceDefinition" />
      <fulfill requirement="ChainElementID" value="LogHandler" />
      <fulfill requirement="ChainElementID" value="MonitorHandler" />
    </instance>
  </fulfill>
</components>

Все необходимые классы (AdapterInterface, Adapter, ExecutorService, ServiceDefinition - расширение AbstractServiceDefinition) реализованы и скомпилированы успешно.Кто-нибудь знает, почему Intershop не может загрузить реализацию?

Также в Intershop Studio в редакторе компонентов при открытии services.component появляется следующая ошибка:

With 'Implementation - ESBServiceDefinitionImpl (unresolved)' cannot be resolved

Но при нажатии CTRL +Обнаружена левая кнопка мыши на реализации "ESBServiceDefinitionImpl" и выделено

<implementation name="ESBServiceDefinitionImpl" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />

.

Ответы [ 4 ]

0 голосов
/ 14 июня 2018

Конечно, это была опечатка :) Я назвал папку с service.component "компонент", а не "компоненты".Спасибо всем за помощь!

0 голосов
/ 12 июня 2018

Можете ли вы попробовать следующие настройки компонентов:

<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://www.intershop.de/component/2010" scope="global">
  <!-- Adapter interface -->
  <contract name="ESBService" class="com.test.service.capi.ESBService" />

  <!-- ServiceDefintion implementation -->
  <implementation name="com.test.service.internal.ESBServiceDefinition" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />

  <!-- Registering the ServiceDefintion instance to the (global) ServiceDefinitionRegistry -->
  <fulfill requirement="serviceDefinition" of="serviceDefinitionRegistry">
    <instance with="ServiceDefinitionRegistry.Entry">
      <fulfill requirement="cartridgeID" value="service_esb" />
      <fulfill requirement="groupID" value="service.group.name.test" />
      <fulfill requirement="parameterGroupID" value="ESBParameters" />
      <fulfill requirement="serviceDefinitionID" value="esbService" />
      <fulfill requirement="localizationKeyForName" value="service.definition.name.esbService" />
      <fulfill requirement="serviceDefinition">
        <instance with="com.test.service.internal.ESBServiceDefinition" />
      </fulfill>
      <fulfill requirement="ChainElementID" value="LogHandler" />
      <fulfill requirement="ChainElementID" value="MonitorHandler" />
    </instance>
  </fulfill>
</components>
0 голосов
/ 13 июня 2018

Это длинный путь, но вы пытались повторно развернуть сервер после создания настраиваемой управляемой службы?

  1. Останов сервера.
  2. Запуск gradlew deployServer
  3. Запуск сервера
0 голосов
/ 12 июня 2018

Возможно, идентификатор ServiceDefinitionID не совпадает:

esbService vs. ESBServiceDefinition

...