мы пытаемся создать проект .ear с веб-приложением, предоставляющим некоторые остальные API. Проект включает в себя «микро-банки», представляющие некоторую логику работы (аннотированная @Path
), каждая банка содержит некоторый класс отдыха (аннотированный @Path
). Приложение совместимо с Java EE 7 и развернуто на экземпляре WAS 9 , структурированный .ear следующий:
project.ear
|
|- META-INF
| |- application.xml
|
|-lib
| |- service1.jar (with rest classes)
| | |- META-INF
| | |- beans.xml
| |
| |
| |
| |- service2.jar (with rest classes, same structure as service1.jar)
| |
| |- core.jar (with Application subclass, same structure as service1.jar)
|
|
|- app.war
| |- classes (empty)
| |- web.xml
| |- beans.xml
web.xml в .war содержит ссылку на подкласс пользовательского приложения:
<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.example.MyApplicationSubclass</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
И каждый bean.xml выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="all">
</beans>
MyApplicationSubclass
пусто, у него есть какой-либо переопределенный метод и аннотируется базовой @ApplicationPath
аннотацией.
В других AS, таких как WebLogic и JBOSS, нет необходимости явного сервлетадекларация, все обнаруживается автоматически, но в WAS мы обнаружили следующие основные проблемы:
- Автоматическое обнаружение полностью отключено, классы
@ApplicationPath
и @Path
не обнаруживаются автоматически. MyApplicationSubclass
должен быть включен в web.xml .war - Даже если
MyApplicationSubclass
объявлен в web.xml, остальные конечные точки не обнаруживаются автоматически - Дажечерез отражение, из
MyApplicationSubclass
невозможно найти покойклассы npoint
Есть советы? Почему эта структура подходит для других AS? Связаны ли эти проблемы с Apache CXF?
ПРИМЕЧАНИЕ: Мы также попытались запустить приложение с родительской политикой последней загрузки, но проблема остается.