【发布时间】:2023-04-03 14:55:01
【问题描述】:
我在 Openshift 中创建了一个 Tomcat 7 应用程序,并在那里部署了我的 Web 服务。问题是我的网络服务应该调用另一个服务。不显示任何结果。我在 localhost 中测试了该服务,它运行良好,但在 openshift 中却不行!
我应该将服务的 URL 更改为 myapp-myDomain.rhcloud.com 吗?或者有什么问题?
更新
它是否与端口转发有关,因为我的应用程序尝试调用部署在 tomcat 中的另一个 Web 服务和另一个来自 wsdl url 地址的外部 Web 服务(扮演客户端 Web 服务的角色),所有这些都部署在 Openshift 中?
我收到以下异常,看起来像是某种 Permission 问题 wrt wrt Axis on Openshift。
完成 StackTrace
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
org.apache.axis2.AxisFault: Permission denied
org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:197)
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.net.BindException: Permission denied
java.net.PlainSocketImpl.socketBind(Native Method)
java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
java.net.Socket.bind(Socket.java:631)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:139)
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
有一个简单的例子可以找到here
【问题讨论】:
-
您是否尝试在同一个应用程序上调用另一个 Web 服务?你的日志是怎么说的?
-
感谢您的回复,是的,我在 Tomcat 中部署了一个 Web 应用程序,它调用也部署在 Tomcat 中的另一个 Web 服务,所有在 Openshift 中的错误是:org.apache.axis2.AxisFault: Permission denied
-
@LolaLoulita 好的,您可以在您拥有客户端 Web 服务的同一台机器上安装 SoapUI 并测试以调用服务器 Web 服务吗?
-
你看过这个help.openshift.com/hc/en-us/articles/… 吗?在您的设备内部,您的 Web 服务应该绑定到 8080,并且从外部端口 80 路由到您的设备 8080 端口。你如何连接到你的网络服务?你使用类似 localhost:80、localhost:8080 或 myapp-myDomain.rhcloud.com 的东西吗?
-
在 Web 服务 wsdl 中,端点是 localhost:8080