我正在向GlassFish v3部署一组基于Java的AMF Web服务。这一切在开发环境中都可以正常工作,但在当前正在设置的暂存环境中失败:
Dev:GlassFish 3.0.1 Web Profile,Java JDK 1.6.0u22。 暂存:GlassFish 3.0,Java JDK 1.6.0u22。
我意识到GlassFish版本和版本不同,我已要求更新它以匹配开发环境。因为我很难想象这会成为问题的原因,但我想我会在这里询问是否有人有任何想法。
基于Java的AMF服务与基于.NET的SOAP服务交互。 Java服务使用wsimport
从SOAP服务生成代理。在我尝试初始化SOAP代理时发生错误。
堆栈跟踪如下:
org.granite.messaging.service.ServiceException: Could not initialize class com.sun.xml.internal.ws.spi.ProviderImpl
at org.granite.messaging.service.AbstractServiceExceptionHandler.getServiceException(AbstractServiceExceptionHandler.java:42)
at org.granite.messaging.service.DefaultServiceExceptionHandler.handle(DefaultServiceExceptionHandler.java:33)
at org.granite.messaging.service.ServiceInvoker.invoke(ServiceInvoker.java:121)
at org.granite.messaging.amf.process.AMF3RemotingMessageProcessor.process(AMF3RemotingMessageProcessor.java:56)
at org.granite.messaging.amf.process.AMF0MessageProcessor.process(AMF0MessageProcessor.java:79)
at org.granite.messaging.webapp.AMFMessageServlet.doPost(AMFMessageServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
[..cut..]
Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.spi.ProviderImpl
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:31)
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:128)
at javax.xml.ws.spi.Provider.provider(Provider.java:83)
at javax.xml.ws.Service.<init>(Service.java:56)
[..cut..]
有什么想法吗?
答案 0 :(得分:1)
解决方案是安装完整的GlassFish Server而不是GlassFish Server Web Profile。尽管使用Web Profile设置了开发环境,但它仍然存在完整的GlassFish(特别是JAXB和JAXWS jar文件)的残余部分。
暂存环境很干净,只安装了Web配置文件,因此缺少依赖项而失败。