【问题标题】:How do I run a war as a web service locally using java and tomcat?如何使用 java 和 tomcat 在本地将战争作为 Web 服务运行?
【发布时间】: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


【解决方案1】:

我使用的战争文件来自一个 repo,它在我下载它时将日期添加到它的名称中。当我重新审视我所做的事情时,我意识到了这个问题,所以我通过剥离日期来更改战争的名称以匹配上下文根,重新部署它并且一切都开始工作了。

【讨论】:

    【解决方案2】:

    只需复制tomcat webapps目录下的war文件,然后重启Tomcat即可。 war文件会自动转换成app folder

    【讨论】:

    • 我忽略了我已经完成了那部分。我现在将其添加到问题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2016-03-16
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 2018-07-28
    • 2011-10-12
    相关资源
    最近更新 更多