簡體   English   中英

JAX-WS-如何配置完整的URL

[英]JAX-WS - how to configure complete URL

我有一個帶有@WebService批注的Java類,並打包在WAR中。 將WAR部署到不同的JavaEE 6應用程序服務器時,我希望具有相同的URL(當然具有不同的主機和端口...)。

默認命名似乎與應用服務器有關。 一些例子:

Glassfish的:

http:// {主機名或IP}:{端口} / {服務名稱} / {端口名稱}

JBoss的:

http:// {主機名或IP}:{端口} / {ejb-jar-name} / {服務名稱} / {端口名稱}

的WebSphere:

http:// {hostname或ip}:{port} / {ejb-jar-name} / {service name}

所有服務器供應商最簡單的配置方法是什么?

如果要基於POJO類創建Web服務,則只需要將war文件打包到ear文件中,並在application.xml配置文件中定義Web模塊的上下文根。 這是一個application.xml文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">
  <display-name>simple-ws-app</display-name>
  <module>
    <web>
      <web-uri>simple-ws-war.war</web-uri>
      <context-root>/simple-ws-app</context-root>
    </web>
  </module>
  <library-directory>lib</library-directory>
</application>

在注釋@WebService中,您可以配置預期的Web服務配置,如果您有wsdl文件,則可以更輕松地定義Web服務。 這是完整的@WebService批注配置的示例,僅使用所需的屬性。

@WebService(name = "SimpleService",
        serviceName = "SimpleService",
        portName = "SimpleServicePort",
        endpointInterface = "simple.ws.srv.SimpleServicePortType",
        targetNamespace = "http://www.ws.simple/srv",
        wsdlLocation = "WEB-INF/wsdl/simple-ws.wsdl"
)

請注意,如果使用的是wsdl文件,則默認位置是將其放置在WEB-INF / wsdl中。

現在,此配置的預期wsdl URL為

http://hostname:port/simple-ws-app/SimpleService?wsdl

這可能不適用於所有應用程序服務器,我知道它適用於Glassfish,WildFly和Weblogic。

最后,企業Web服務(例如EJB WebServices,ear文件內的ejb-jar)的默認命名與應用服務器相關。 我一直在谷歌搜索,並且試圖用相同的結果完成這種配置已有幾個月了。 如果您提供完整的@WebService批注配置(包括具有預期端點配置的有效wsdl),則應用服務器將覆蓋wsdl端點URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM