Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Деплой EJB на WASCE, v1.1.0.2. Ошибка.


Автор: Tsahes 25.11.2008, 10:35
Добрый день,

Я пробую задеплоить простейшее приложение, ear с одним бином.
Сервер приложений - WASCE, версия 1.1.0.2; бин - Stateless Session Bean, EJB2.1.

Если бин упаковать в один jar, деплой проходит успешно.
В моем же случае Home и Remote интерфейсы бина упакованы в kernel-common.jar, реализация бина - в kernel-core.jar.

Структура ear:
Код

APP-INF
    lib
       kernel-common.jar
META-INF
    application.xml
kernel-core.jar


Если application.xml имеет вид
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
    "http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>kernel-ear</display-name>
  <module>
    <ejb>kernel-core.jar</ejb>
  </module>
</application>

, получаю ошибку:
Код

Remote interface class not found: ru.home.kernel.common.service.FunnyService
org.apache.geronimo.common.DeploymentException: Remote interface class not found: ru.home.kernel.common.service.FunnyService
    at org.apache.geronimo.naming.deployment.ENCConfigBuilder.assureInterface(ENCConfigBuilder.java:621)
    at org.apache.geronimo.naming.deployment.ENCConfigBuilder.assureEJBObjectInterface(ENCConfigBuilder.java:598)


Вероятно, WASCE не понимает, что искать интерфейсы надо в APP-INF/lib. Хорошо.
Предположим, application.xml имеет вид
Код

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
    "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"
    "http://java.sun.com/dtd/application_1_3.dtd">
<application>
  <display-name>kernel-ear</display-name>
  <module>
    <java>APP-INF/lib/kernel-common.jar</java>
  </module>
  <module>
    <ejb>kernel-core.jar</ejb>
  </module>
</application>

, получаю ошибку:
Код

Module was not an application client: APP-INF/lib/kernel-common-1.0-SNAPSHOT.jar
org.apache.geronimo.common.DeploymentException: Module was not an application client: APP-INF/lib/kernel-common-1.0-SNAPSHOT.jar
    at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.addModules(EARConfigBuilder.java:761)
    at org.apache.geronimo.j2ee.deployment.EARConfigBuilder.getEarPlan(EARConfigBuilder.java:364)

В моем приложении модуля application client точно не будет.

Поиск ничего полезного не дал.
Подскажите, как дать понять WASCE, что необходимые интерфейсы бина лежат в APP-INF/lib?

Автор: Asal 25.11.2008, 11:12
Цитата(Tsahes @  25.11.2008,  10:35 Найти цитируемый пост)
Подскажите, как дать понять WASCE, что необходимые интерфейсы бина лежат в APP-INF/lib?

либо папку lib положить там где она должна быть
root-
   App-INF
   META-INF
   lib
   kernel-core.jar
либо указать другой путь в application.xml

Автор: Tsahes 25.11.2008, 12:47
Цитата(Asal @  25.11.2008,  11:12 Найти цитируемый пост)
либо папку lib положить там где она должна быть

Не помогло. Изменил структуру ear:
Код

lib
   kernel-common.jar
META-INF
    application.xml
kernel-core.jar


Получил исключение:
Код

Remote interface class not found: ru.home.kernel.common.service.FunnyService
org.apache.geronimo.common.DeploymentException: Remote interface class not found: ru.home.kernel.common.service.FunnyService

Автор: Tsahes 25.11.2008, 13:12
Спасибо всем, решение найдено.
В
Код

kernel-core.jar/META-INF/MANIFEST.MF

добавлено упоминание о классах:
Код

Class-Path: lib/kernel-common.jar


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)