2012-02-17 70 views
2

我在Netbeans中編寫了一個簡單的Webservice,如下所示。Websphere中的JAXWS

@WebService() 
public class CRSEncryptString { 

/** 
* Web service operation 
*/ 
@WebMethod(operationName = "encryptString") 
public String encryptString(@WebParam(name = "plainText") 
String plainText) { 
    System.out.println("************* "); 
    String cipher = plainText; 
    System.out.println("***************************"); 
    return cipher; 
} 

} 

增加罐子都涉及到JAX-WS,如: 的activation.jar,FastInfoset.jar,http.jar,JAXB罐子,罐子JAXWS,SAAJ罐等

其工作正常在Tomcat和Weblogic中。

但是,在Websphere 6.1運行時,它給出的錯誤。

以下是SERVERLOG:

[2/17/12 17:22:53:421 IST] 0000003c AdminHelper A ADMN1009I: An attempt is made to start the JAXWS-Test1_war application. 
[2/17/12 17:22:54:390 IST] 0000003c ApplicationMg A WSVR0200I: Starting application: JAXWS-Test1_war 
[2/17/12 17:22:54:452 IST] 0000003c ApplicationMg A WSVR0204I: Application: JAXWS-Test1_war Application build level: Unknown 
[2/17/12 17:22:54:624 IST] 0000003c WebGroup  A SRVE0169I: Loading Web Module: JAXWS-Test1.war. 
[2/17/12 17:22:54:936 IST] 0000003c http   I WSSERVLET12: JAX-WS context listener initializing 

[2/17/12 17:22:55:264 IST] 0000003c http   E WSSERVLET11: failed to parse runtime descriptor: java.lang.LinkageError: You are loading old SAAJ from jar:file:/E:/Program%20Files/Websphere6_1/lib/j2ee.jar!/javax/xml/soap/MessageFactory.class 
          java.lang.LinkageError: You are loading old SAAJ from jar:file:/E:/Program%20Files/Websphere6_1/lib/j2ee.jar!/javax/xml/soap/MessageFactory.class 
    at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:184) 
    at com.sun.xml.ws.api.SOAPVersion.<clinit>(SOAPVersion.java:83) 
    at java.lang.J9VMInternals.initializeImpl(Native Method) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:177) 
    at com.sun.xml.ws.api.BindingID.<clinit>(BindingID.java:318) 
    at java.lang.J9VMInternals.initializeImpl(Native Method) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:177) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.createBinding(DeploymentDescriptorParser.java:302) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters(DeploymentDescriptorParser.java:243) 
    at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse(DeploymentDescriptorParser.java:147) 
    at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:108) 
    at com.ibm.ws.wswebcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:605) 
    at com.ibm.ws.webcontainer.webapp.WebApp.commonInitializationFinish(WebApp.java:265) 
    at com.ibm.ws.wswebcontainer.webapp.WebApp.initialize(WebApp.java:271) 
    at com.ibm.ws.wswebcontainer.webapp.WebGroup.addWebApplication(WebGroup.java:88) 
    at com.ibm.ws.wswebcontainer.VirtualHost.addWebApplication(VirtualHost.java:157) 
    at com.ibm.ws.wswebcontainer.WebContainer.addWebApp(WebContainer.java:653) 
    at com.ibm.ws.wswebcontainer.WebContainer.addWebApplication(WebContainer.java:606) 
    at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:333) 
    at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:549) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1295) 
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1129) 
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:567) 
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:814) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:948) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl$1.run(ApplicationMgrImpl.java:1478) 
    at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:3731) 
    at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:3813) 
    at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:245) 
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1483) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:62) 
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:265) 
    at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1089) 
    at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:971) 
    at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231) 
    at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802) 
    at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1055) 
    at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 
    at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:948) 
    at com.ibm.ws.management.application.AppManagementImpl._startApplication(AppManagementImpl.java:1285) 
    at com.ibm.ws.management.application.AppManagementImpl.startApplication(AppManagementImpl.java:1184) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:62) 
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:265) 
    at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1089) 
    at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:971) 
    at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231) 
    at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802) 
    at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1055) 
    at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 
    at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:948) 
    at com.ibm.ws.management.connector.AdminServiceDelegator.invoke(AdminServiceDelegator.java:139) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at com.ibm.ws.management.connector.soap.SOAPConnector.invoke(SOAPConnector.java:338) 
    at com.ibm.ws.management.connector.soap.SOAPConnector.service(SOAPConnector.java:206) 
    at com.ibm.ws.management.connector.soap.SOAPConnection.handleRequest(SOAPConnection.java:55) 
    at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:680) 
    at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:484) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498) 
Caused by: java.lang.NoSuchMethodError: javax/xml/soap/MessageFactory.newInstance(Ljava/lang/String;)Ljavax/xml/soap/MessageFactory; 
    at com.sun.xml.ws.api.SOAPVersion.<init>(SOAPVersion.java:178) 
    ... 78 more 

[2/17/12 17:22:55:467 IST] 0000003c WebApp  E WSSERVLET11: failed to parse runtime descriptor: java.lang.LinkageError: You are loading old SAAJ from jar:file:/E:/Program%20Files/Websphere6_1/lib/j2ee.jar!/javax/xml/soap/MessageFactory.class 
[2/17/12 17:22:55:514 IST] 0000003c ServletWrappe I SRVE0242I: [JAXWS-Test1_war] [/JAXWS-Test1] [CRSEncryptString]: Initialization successful. 
[2/17/12 17:22:55:530 IST] 0000003c VirtualHost I SRVE0250I: Web Module <null> has been bound to default_host[*:9080,*:80,*:9443,*:5060,*:5061,*:443]. 
[2/17/12 17:22:55:561 IST] 0000003c ApplicationMg A WSVR0221I: Application started: JAXWS-Test1_war 
[2/17/12 17:23:05:714 IST] 00000048 ServletWrappe I SRVE0242I: [JAXWS-Test1_war] [/JAXWS-Test1] [/index.jsp]: Initialization successful. 

請進一步表明了我。

在此先感謝..........

回答

2

我通過管理控制檯更改WebSphere的類加載器策略,即從PARENT_FIRST爲PARENT_LAST政策解決了這個問題....

0

在一般情況下,我想你會如果你不使用WebSphere自己的實施,讓WebSphere下與JAX-WS的困難。因此,您不想部署任何額外的jar,而是使用WebSphere 7中已有的jar。

0

如果您使用RAD,則應該將Websphere Application Server運行時添加到Project Build Path中,而不是添加外部罐子。

+0

請你能建議我在運行時添加的程序......它適合於我的問題.... – NamingException 2012-02-21 11:45:07

+0

我手邊沒有RAD,但它是這樣的:右鍵單擊您的項目 - > Build Path-> Libraries,然後在其中添加IBM WAS Runtime到您的項目。 – 2012-02-21 14:00:50

0

這是有風險的改變類加載器順序在WebSphere因爲您加載自定義Websphere可能不支持這些實現,因爲不同的實現共存於同一個Java進程中,您可能會遇到LinkageErrors和ClassCastException等運行時錯誤。最好的方法是使用IBM支持的Jax-WS編程模型。 另外,您可以通過禁用IBM's

使用自定義Web服務引擎

-Dcom.ibm.websphere.webservices.DisableIBMJAXWSEngine =真