如果您要創建基於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
這可能不是FOT所有應用程序的服務器的工作,我知道它對於GlassFish,WildFly和Weblogic的。
最後,企業Web服務的默認命名(例如EJB WebServices,ejb-jar內部的ear文件)與應用服務器相關。我一直在使用Google,並試圖在幾個月內完成此配置,並獲得相同的結果。無論您是否提供完整的@WebService註釋配置(包括有效的wsdl及預期的端點配置),應用服務器都會覆蓋wsdl端點URL。
感謝您提供的信息!關於您最後一段的一個問題:您的意思是「企業網絡服務」與您上面描述的相反嗎? – jens
當我說企業Web服務時,我指的是JSR-109,它是一種將Java-ee組件(如Enterprise Java Beans(EJB))作爲Web服務公開的簡單而強大的方式。 –