簡體   English   中英

Java:使用端點將 webservice 發布到 tomcat 服務器

[英]Java: using endpoint to publish webservice to tomcat server

我正在創建一個簡單的 SOAP Web 服務。 我要確保它在 tomcat Web 服務上運行。

我試圖用 JAX-WS 實現這個(見代碼)

我的問題是:Endpoint.publish 是使用 tomcat 服務器來托管它還是它是一種小型 glassfish 服務器?

我應該擴展 UnicastRemoveObject 還是類似的東西?

理想情況下,它可以打包到 .WAR 中並放入目錄中並正常工作。

它似乎不適用於我安裝的 tomcat 服務器,因為它說端口已被使用。 我正在使用安裝了 tomcat6 軟件包的 Ubuntu karmic,也可能是我的用戶沒有權限在 8080 上發布到正在運行的 tomcat

我希望這個問題足夠清楚

示例代碼:

@WebService
public class UserAttributes {
    public static void main(String[] args) {
        UserAttributes instance = new UserAttributes();
        Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
            instance);
    }

    public string Hello() {
       return "Hello World";
    }
}

Endpoint.publish是否使用 tomcat 服務器來托管它,或者它是一種小型 glassfish 服務器?

JAX-WS RI Endpoint.publish默認API采用了重量輕, HTTP服務器實現包含在Sun的Java SE 6,所以,不,它使用嵌入式GlassFish的,也不是一個嵌入式的Tomcat,甚至更少現有的Tomcat安裝:它使用嵌入式容器,即在同一個 JVM 中運行的東西。 僅供參考,但是可以插入其他實現,只要它們提供服務提供者實現(SPI)。 例如,Jetty 6 這樣做,請參閱J2se6HttpServerSPI 但我不會在這里涵蓋所有細節:)

它似乎不適用於我安裝的 tomcat 服務器,因為它說端口已被使用。

正如我上面所說, Enpoint.publish API 不使用您現有的 Tomcat 安裝。 它使用自己的服務器,並允許您部署 Web 服務而無需打包和部署您的應用程序。 它在開發過程中特別有用(因為它可以加快速度)。 實際上,它非常方便。

現在,如果您有一個 Tomcat 服務器在端口 8082 上運行,並且如果您嘗試使用相同的端口發布Endpoint ,事情將不會像您注意到的那樣工作。 在開發過程中使用不同的(和未使用的)端口。

如果您想將您的 Web 服務部署到您現有的 Tomcat 安裝中,那么您必須將它們打包在一個 war 中並在 Tomcat 上部署這個 war。 但這完全不同,並且與使用Endpoint.publish API 沒有任何關系。

非常有趣。 在我看來,嵌入式服務器還包含一個soap 引擎來處理發送到該端口的soap 消息。 這也是嵌入式soap引擎還是使用流行的soap引擎之一(axis2,cxf,metro)

Endpoint.publish()不會將 Web 服務發布到服務器實例。 如果要將端點發布到 Web 服務器,則必須使用ws gen工具將其打包到 WAR 中,然后部署到 Web 服務器。

Endpoint.publish()將端點發布到 JVM 的運行時實例,而無需創建服務器實例。 當使用使用 JAX-WS 創建的客戶端測試類對 Web 服務進行單元測試時,它非常有用。

暫無
暫無

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

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