Добрый день,
Я пробую задеплоить простейшее приложение, 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? |