javax.xml.ws.soap.SOAPFaultException: Unable to internalize message
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at $Proxy41.login(Unknown Source)
at com.primavera.wsclient.AuthenticationServiceJAXWSClient.testLogin(AuthenticationServiceJAXWSClient.java:154)
at com.primavera.wsclient.AuthenticationServiceJAXWSClient.main(AuthenticationServiceJAXWSClient.java:38)
Caused by: org.apache.cxf.binding.soap.SoapFault: Unable to internalize message
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:75)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:46)
at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:35)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:96)
at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:135)
at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:69)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:641)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2108)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1987)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1912)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:611)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:469)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
Thanks
Steve
Thanks
Steve
WAS 6.1 did not have any support for JAX-WS based web services. You had to add web services feature pack to add that support. Whereas in WAS 7.0 JAX-WS is already bundled into the app server itself. So yes, please create a PMR with IBM support. You will need to flip class loaders and may need to set up some isolated shared libraries with the CXF jars.
thanks,
dims
Thanks
Steve
Please see here:
http://www.ibm.com/developerworks/websphere/support/appserver_support.html#step6
thanks,
dims
Could you please keep us updated concerning your issue?
We're also facing some troubles by using CXF within WAS 7.
The only way seems to put CXF Jars in a specific folder and to modify class loading features accordingly (or by using a shared library). But which Jars should be overloaded? Is there an exhaustiv list?
Thanks a lot.
BR
Any news concerning this issue?
Thanks a lot.
Can you please tell me the versions of all the jar files that you have in web-inf/lib folder?
It will be fine if I can get it working using CXF 2.1 in WebSphere 6.1.
However, in my current endeavor, I am using CXF 2-2-3. I have placed all the jar files that are downloaded from CXF 2-2-3 in the web-inf/lib folder of the web application. I add that application in the WebSphere 6.1 test server. When I start the server, I get the following error:
Publishing failed
Deploying MyPocWebService
Deployment from com.ibm.ast.ws.jaxws.deployer.JAXWSDeployer had errors:
Tools for WebSphere V6.1 must be installed in order to generate WebSphere V6.1 compliant code.
Any suggestion will be appreciated.
As I mentioned, it will be fine if I have CXF 2.1.6 running in WebSphere 6.1. I do not have to use CXF 2-2-3, in case it has any limitation with WebSphere 6.1.
Now, I changed the jar files in the web-in/lib project from CXF with all the jar files obtained from CXF2.1.6. I do not get the same error and the application deploys successfully. When I run the client, I get the error below:
ID: 1
Address: http://localhost:9081/authManager/services/cxfAuth
Encoding: UTF-8
Content-Type: text/xml
Headers: {SOAPAction=[""], Accept=[*/*]}
Payload: 0223938
--------------------------------------
Sep 18, 2009 1:31:00 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
WARNING: Interceptor has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:127)
at $Proxy48.getEmployee(Unknown Source)
at com.company.auth.client.Client.main(Client.java:21)
Caused by: java.io.IOException: Not Found
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2068)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2019)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1944)
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 8 more
Exception in thread "main" javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145)
at $Proxy48.getEmployee(Unknown Source)
at com.company.auth.client.Client.main(Client.java:21)
Caused by: org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:127)
... 2 more
Caused by: java.io.IOException: Not Found
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2068)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2019)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1944)
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 8 more
Following is the client code:
package com.company.auth.client;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.company.auth.bean.Employee;
import com.company.auth.service.AuthService;
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
factory.setServiceClass(AuthService.class);
factory.setAddress("http://localhost:9081/authManager/services/cxfAuth");
AuthService client = (AuthService) factory.create();
Employee employee = client.getEmployee("0223938");
System.out.println("Server said: " + employee.getLastName() + ", " + employee.getFirstName());
System.exit(0);
}
}
Could anybody please answer the following questions:
1. Has anyone been able to run CXF2.2.3 in WebSphere 6.1?
2. What could be the problem with my client for running CXF 2.1.6 in WebSphere 6.1? I am using the example from http://www.benmccann.com/dev-blog/web-services-tutorial-with-apache-cxf/ that is using CXF2.1.6
1) Remove the geronimo-servlet_ _spec-.jar from the web-inf/lib of CXF war.
2) Modify the MANIFEST.mf file your CXF war and add the following property
UseWSFEP61ScanPolicy: false
alternatively you can set a system property com.ibm.websphere.webservices.UseWSFEP61ScanPolicy=false.
3) Flip the WAR Module Class loader to PARENT_LAST.
For WAS 6.1 with Feature Pack.
1) You will need a PMR, there is a fix provided by IBM that enables a property setting to turn off IBM JAX-WS Engine, once you set that property the CXF application should start.
2) Next you will have to make sure that you remove the geronimo-servlet jar as CXF packages 2.5 servlet and WAS 6.1 does not support 2.5.
3) Flip the module class loader to use “Classes loaded with application class loader first”.
Hope this helps.
-Nikhil.