[英]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.