【问题标题】:Change exposed WebService URL in Wildfly更改 Wildfly 中公开的 WebService URL
【发布时间】:2015-08-06 09:19:08
【问题描述】:

我有一个当前在 Glassfish 4.0 下运行的 Web 应用程序,并希望对其进行修改以在 Wildfly 8.2 下运行。我目前遇到的问题是:

我有一些 Web 服务(带有注释 @WebService),目前在 /ws/ 下发布

f.e. “PanelService”将暴露在/myAppContextRoot/ws/PanelService

我通过将Glassfish-WS-Servlet (ergo JAXWS-RI) 绑定到web.xml 中的/ws/* 来做到这一点。 在不使用 Wildfly 特定注释的情况下,是否有比较适合 Wildfly 的方法 - 仅通过配置?我不想在我的classpath 中有jboss-classes

我目前的“解决方案”是将JAXWS-RI 添加到类路径并两次发布服务 - 通过JBoss-WSJAXWS-RI :-(

€编辑:

Terrence Curran 的解决方案确实有效.....但是....我不得不添加一些小的改动。

  • 我不知道的是:必须将文件放在 src/main/webapp/META-INF(Maven Web 项目)下 - 之前尝试过 src/main/resources/META-INF...
  • 上下文根必须包含我的应用程序名称.....我的jboss-webservices.xml 现在是:

.

<webservices>
    <context-root>myApp/ws</context-root>
</webservices>
  • 我必须将至少一个 web 服务标记为@Stateless EJB。不要问我为什么 - 但如果我删除注释,文件似乎不会被解析和应用。只有当有一个 WS 也作为 EJB 存在时,我的 wildlfy 才会应用 jboss-webservices.xml。 (错误?)

【问题讨论】:

    标签: java web-services jboss jax-ws wildfly


    【解决方案1】:

    知道了。

    在 Wildfly 下,可以将 WebServices 映射为 web.xml 中的“servlet”。 所以我只需要删除JAX-WS RI并将以下sn-p添加到web.xml

    <servlet>
        <servlet-name>PanelService</servlet-name>
        <servlet-class>org.myapp.ws.PanelService</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PanelService</servlet-name>
        <url-pattern>/ws/PanelService</url-pattern>
    </servlet-mapping>
    

    【讨论】:

      【解决方案2】:

      @cljk 不错的快捷方式。

      为了完成你的答案,如果你不想弄乱 web.xml,@WebServlet 注释也可以工作:

      @WebServlet("/soap/test")
      @WebService(name = "test", serviceName = "testService", portName = "testPort")
      @SOAPBinding(style = Style.DOCUMENT)
      @MTOM(enabled = true, threshold = 4194304)
      public class SoapTestService
      {
          ...
      }
      

      你会得到:

      JBWS024061: Adding service endpoint metadata: id=it.shape.myapp.ws.soap.test.SoapTestService
       address=http://localhost:8080/myapp/soap/test
       implementor=it.shape.myapp.ws.soap.test.SoapTestService
       serviceName={http://test.soap.ws.myapp.shape.it/}testService
       portName={http://test.soap.ws.myapp.shape.it/}testPort
       annotationWsdlLocation=null
       wsdlLocationOverride=null
       mtomEnabled=true
      

      在 Wildfly 10.0.0.Final 上测试

      【讨论】:

        【解决方案3】:

        我还会考虑在 jboss-webservices.xml 文件中定义上下文根。这样您就可以避免修改 web.xml,这会破坏您在 GlassFish 中的部署。

        <webservices>
            <context-root>ws</context-root>
        </webservices>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-07
          • 1970-01-01
          • 2016-02-18
          • 2015-10-01
          • 2023-04-02
          相关资源
          最近更新 更多