【问题标题】:Openshift, a web Service that invoke another web ServiceOpenshift,一种调用另一个 Web 服务的 Web 服务
【发布时间】: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

标签: java openshift axis2


【解决方案1】:

这可能与跨域策略问题有关。我不知道。请检查以下网址。我希望它可能会有所帮助。

https://spring.io/guides/gs/rest-service-cors/

【讨论】:

    【解决方案2】:

    这是一个权限问题。您必须以 root 用户身份运行两个服务器才能打开 80 端口。否则你会得到异常。

    见priviliged port

    【讨论】:

    • 感谢您的回复,但是以 root 身份运行两台服务器是什么意思,我无法以 root 身份访问 openshift 并且在我的本地计算机上我使用的是 root 用户?!关于 SoapUI 我无法创建项目,因为我无法访问 wsdl 文件,在部署战争 Web 服务时,不会自动生成 wsdl,它需要 aar 格式或其他格式
    • 您可以通过 SOAP ui 调用您的 Web 服务,而无需 wsdl,只需使用您的 Web 服务的端点
    • 我尝试了端点,但是在我运行它之后它显示了一个 Html 页面的轴(服务验证管理),这是端点 mytomcatapp-sirdomain.rhcloud.com/AirlineWebService 。任何帮助表示赞赏
    • @LolaLoulita 实际上在您的服务器上没有公开网络服务。你可以查看mytomcatapp-sirdomain.rhcloud.com/AirlineWebService/axis2-admin/…
    • 好吧,谢谢,我不明白我部署web服务的问题在哪里,Tomcat的webapp文件夹中的war文件!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多