Glassfish 4.1:war inside ear 不公开网络服务
Glassfish 4.1: war inside ear does not expose webservices
我目前正在努力将应用程序从 Glassfish 3.1.2.2
的 Java7
运行 升级到 Glassfish 4.1
的 Java8
运行。该应用程序被打包为一个 ear
文件,其中包含一个 ejb-jar
和一个 war
。 war
又包含一些 webservices
.
在 Glassfish 3.1.2.2
中,部署 ear
将导致 war
暴露一些 webservices
。但是,当我在 Glassfish 4.1
中部署 ear
时,没有 webservice
暴露。在 Glassfish
中列出 ear
的组件时,war
不会在 4.1
中列出 webservices
(仅 web
)(但在3.1.2.2
)。
我尝试将 war
文件作为独立应用程序部署,执行此操作时 webservices
可用。
有谁知道在使用 Glassfish 4.1 通过 ear
文件部署 webservices
时是否存在已知错误?
关于更改,我已经升级了一些依赖项,但据我所知,没有什么会影响它。
我的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>myApplication-ear</display-name>
<description>myApplication</description>
<module>
<ejb>myApplication-ejb-5.2-SNAPSHOT.jar</ejb>
</module>
<module>
<web>
<web-uri>myApplication-war-5.2-SNAPSHOT.war</web-uri>
<context-root>/myApplication-war</context-root>
</web>
</module>
</application>
这可能是您的场景吗(?):当作为 Web 服务公开且具有处理程序的 EJB 在它具有依赖项的 EJB 之前初始化时,EJB 模块部署可能会失败。这是由 EJB 容器初始化和加载 EJB Web 服务的方式引起的,解决方法是重命名 EJB,以便在它具有依赖项的 EJB 之后初始化作为 Web 服务公开的 EJB。
问题是旧的依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
我删除了它,因为它已经包含在 java 安装的 rt.jar 中。
不知何故,Glassfish 根本没有处理这个问题,网络服务根本无法工作,server.log
中也没有任何错误痕迹
我目前正在努力将应用程序从 Glassfish 3.1.2.2
的 Java7
运行 升级到 Glassfish 4.1
的 Java8
运行。该应用程序被打包为一个 ear
文件,其中包含一个 ejb-jar
和一个 war
。 war
又包含一些 webservices
.
在 Glassfish 3.1.2.2
中,部署 ear
将导致 war
暴露一些 webservices
。但是,当我在 Glassfish 4.1
中部署 ear
时,没有 webservice
暴露。在 Glassfish
中列出 ear
的组件时,war
不会在 4.1
中列出 webservices
(仅 web
)(但在3.1.2.2
)。
我尝试将 war
文件作为独立应用程序部署,执行此操作时 webservices
可用。
有谁知道在使用 Glassfish 4.1 通过 ear
文件部署 webservices
时是否存在已知错误?
关于更改,我已经升级了一些依赖项,但据我所知,没有什么会影响它。
我的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>myApplication-ear</display-name>
<description>myApplication</description>
<module>
<ejb>myApplication-ejb-5.2-SNAPSHOT.jar</ejb>
</module>
<module>
<web>
<web-uri>myApplication-war-5.2-SNAPSHOT.war</web-uri>
<context-root>/myApplication-war</context-root>
</web>
</module>
</application>
这可能是您的场景吗(?):当作为 Web 服务公开且具有处理程序的 EJB 在它具有依赖项的 EJB 之前初始化时,EJB 模块部署可能会失败。这是由 EJB 容器初始化和加载 EJB Web 服务的方式引起的,解决方法是重命名 EJB,以便在它具有依赖项的 EJB 之后初始化作为 Web 服务公开的 EJB。
问题是旧的依赖项:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
我删除了它,因为它已经包含在 java 安装的 rt.jar 中。 不知何故,Glassfish 根本没有处理这个问题,网络服务根本无法工作,server.log
中也没有任何错误痕迹