2010-12-15 172 views
0

我使用1.2 soap绑定创建了使用CXF的Web Service。CXF与.Net不兼容?

当我试图创建一个C#的客户,尽量做到“添加Web服务引用”

Java方面给予预警..

所以......它意味着两个部分使用不同的标准? 我们可以解决这个问题吗?我正在jdmichal`s建议把

<jaxws:endpoint id="{your.service.namespace}YourPortName"> 
    <jaxws:features> 
    <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"/> 
    </jaxws:features> 
</jaxws:endpoint> 

还有另外一个新的警告后,这杞人忧天会引起我trobule,因为我需要用这两种技术创建一个项目......

WARNING: Interceptor for {http://demo.mydemo.com/}DartProxyImplService has thrown exception, unwinding now 
org.apache.cxf.binding.soap.SoapFault: MustUnderstand headers: [{http://www.w3.org/2005/08/addressing}Action, {http://www.w3.org/2005/08/addressing}To] are 
not understood. 
     at org.apache.cxf.binding.soap.interceptor.MustUnderstandInterceptor.checkUltimateReceiverHeaders(MustUnderstandInterceptor.java:129) 
     at org.apache.cxf.binding.soap.interceptor.MustUnderstandInterceptor.handleMessage(MustUnderstandInterceptor.java:87) 
     at org.apache.cxf.binding.soap.interceptor.MustUnderstandInterceptor.handleMessage(MustUnderstandInterceptor.java:48) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) 
     at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) 
     at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) 
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) 
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) 
     at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at org.mortbay.jetty.Server.handle(Server.java:326) 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

.. ..有谁知道这是什么问题? 如何解决?

[INFO] Started Jetty Server 
Dec 16, 2010 10:42:25 AM org.apache.cxf.transport.servlet.ServletController invoke 
WARNING: Can't find the request for http://localhost:8080/DFAWebServiceProxy//'s Observer 
Dec 16, 2010 10:42:34 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 
WARNING: Interceptor for {http://demo.mydemo.com/}DartProxyImplService has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: No such operation: (HTTP GET PATH_INFO: /DFAWebServiceProxy/DartProxy) 
     at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) 
     at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) 
     at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) 
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) 
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) 
     at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at org.mortbay.jetty.Server.handle(Server.java:326) 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
     at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928) 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549) 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Dec 16, 2010 10:42:34 AM org.apache.cxf.ws.addressing.ContextUtils retrieveMAPs 
WARNING: WS-Addressing - failed to retrieve Message Addressing Properties from context 
Dec 16, 2010 10:42:34 AM org.apache.cxf.ws.addressing.ContextUtils retrieveMAPs 
WARNING: WS-Addressing - failed to retrieve Message Addressing Properties from context 
Dec 16, 2010 10:42:34 AM org.apache.cxf.ws.addressing.ContextUtils retrieveMAPs 
WARNING: WS-Addressing - failed to retrieve Message Addressing Properties from context 
Dec 16, 2010 10:42:34 AM org.apache.cxf.ws.addressing.ContextUtils retrieveMAPs 
WARNING: WS-Addressing - failed to retrieve Message Addressing Properties from context 
Dec 16, 2010 10:42:34 AM org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptorInternal handleMessage 
INFO: class org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor$Soap12FaultOutInterceptorInternalapplication/soap+xml 
Dec 16, 2010 10:42:35 AM org.apache.cxf.service.invoker.AbstractInvoker invoke 
SEVERE: Invocation without a binding operation. 
Dec 16, 2010 10:42:35 AM org.apache.cxf.service.invoker.AbstractInvoker invoke 
SEVERE: Invocation without a binding operation. 
Dec 16, 2010 10:42:35 AM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 
WARNING: Interceptor for {http://demo.mydemo.com/}DartProxyImplService has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: No binding operation info while invoking unknown method with params unknown. 
     at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:60) 
     at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
     at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) 
     at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255) 
     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113) 
     at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97) 
     at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:188) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:103) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
     at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159) 
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:401) 
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) 
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) 
     at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 
     at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
     at org.mortbay.jetty.Server.handle(Server.java:326) 
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945) 
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) 
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) 
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

回答

1

您可能需要在Java服务上启用WS-Addressing。由于.NET断言服务器必须理解WS-Addressing的一个子集,并且服务器不符合该断言,所以正在抛出该错误。

http://cxf.apache.org/docs/ws-addressing.html


回合2:

(请在未来,标志着一个问题,回答和发布一个新的,而不是改变你原来的。)

它看起来像.NET客户端试图访问一个操作,但该操作未知/未实现?尝试重新将WSDL导入到.NET中,并查看是否修复了任何内容。另外,您是否正在导入由CXF托管的WSDL,还是手工制作的?您应该使用CXF生成的,至少在您完成所有其他工作之前。

+0

是的..旧的异常已经消失,但一个新的警告来了....我有更新的问题..你能帮我看看吗? – jojo 2010-12-15 23:47:11

+0

我启动了java web服务,然后在浏览器中输入链接,CXF将生成WSDL文件...并在Visual Studio中...我从浏览器复制链接,使用GUI生成客户端代理 – jojo 2010-12-16 09:09:06

0

好了,行:

AbstractHTTPServlet.doGet(...) 

是一种关键的。它获取GET请求,而不是SOAP请求所需的POST。仔细检查客户端在做什么,以确保它发送适当的SOAP请求。