我当前正在升级从Glassfish 3.1.2.2
上运行的Java7
升级到在Glassfish 4.1
上运行的Java8
。该应用程序包装为ear
-FILE,其中包含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
-FILE作为独立应用程序,并且在执行此操作时,webservices
可用。
有人知道是否存在已知错误,该错误是通过使用玻璃鱼4.1的ear
-FILE部署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>
问题是一个旧的依赖性:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
我将其删除,因为它已经包含在Java安装中的RT.Jar中。以某种方式Glassfish根本没有处理此操作,网络服务根本无法正常工作,并且服务器中没有错误痕迹。Log
这可以是您的方案(?):EJB模块部署可能会在以Web服务曝光并具有处理程序的EJB时失败有依赖性。这是由EJB容器初始化和加载EJB Web服务的方式引起的,解决方法是将EJB重命名,以便在具有依赖关系的EJB之后初始化了EJB作为Web服务的EJB。