【发布时间】:2012-09-27 14:05:03
【问题描述】:
我有一些 Java 客户端代码正在远程服务器上的战争中连接到 Web 服务。我正在使用 myeclipse 10.0、java 1.6、cxf 2.2、嵌入式 tomcat 6 localhost 服务器,并且我在命令行下运行 tomcat 6,两个 tomcat 都在同一台机器上运行。
当我的 wsdl 文件指向远程服务器上的服务时,一切正常,但是,当我在一台机器上设置所有内容时,当我尝试访问该服务时出现 java.io 异常。
我在不同的端口上设置了两个 tomcat 实例,我可以看到使用 ProcessExplorer 一切正常,使用 netstat 我可以看到端口正在与它们的侦听器一起工作,没有冲突。我使用来自这个link 的信息来设置tomcat 实例。然后我将war文件复制到webapps目录,我看到tomcat分解了类并加载了它们。我们还使用 cacerts 文件进行 ssl 身份验证,我验证它位于 jvm 中的正确位置。
这里是错误: Caused by: java.io.IOException: // 在 org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2071) 在 org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2022) 在 org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1947) 在 org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) 在 org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:632) 在 org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) 在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:472) 在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:302) 在 org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:254) 在 org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 在 org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:123) 在 $Proxy71.get(未知来源)
我正在使用这个 url 来访问 web 服务端点:
http://localhost:7070/<root context>/<serviceName>
任何想法为什么这不起作用或是否有更好的方法来做到这一点?
后果:
我使用的战争文件来自一个仓库,并在我下载它时将日期添加到它的名称中。我通过剥离日期更改了战争的名称以匹配上下文根,重新部署它,一切都开始工作了。
【问题讨论】:
-
IOException 堆栈跟踪看起来像什么?
-
共享 IOException 的堆栈跟踪会有所帮助。您还可以考虑在 Web 服务的客户端和服务器端添加登录和注销拦截器:cxf.apache.org/docs/debugging-and-logging.html
-
我在 tomcat 上运行 SSL 调试,不幸的是日志记录在我的机器上工作。
-
你使用什么 url 来访问端点服务?
-
bot - 你的问题帮助我找到了答案。请把它作为一个答案来获得信用。
标签: java web-services cxf tomcat6