2014-03-27 30 views
0

我在寫一個使用Glassfish的(非常)小的SOAP Web服務。我的代碼如下:JAX-WS端點不工作

Milliseconds.java

package com.suture.self.ws; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 
import javax.jws.soap.SOAPBinding; 
import javax.jws.soap.SOAPBinding.Style; 
import javax.jws.soap.SOAPBinding.Use; 

@WebService 
@SOAPBinding(style = Style.DOCUMENT, use = Use.LITERAL) 
public interface Milliseconds { 
    @WebMethod 
    String currentMilliseconds(); 
} 

MillisecondsImpl.java

package com.suture.self.ws; 

import javax.jws.WebService; 

@WebService(endpointInterface = "com.suture.self.ws.Milliseconds") 
public class MillisecondsImpl implements Milliseconds { 

    @Override 
    public String currentMilliseconds() { 
     return String.valueOf(System.currentTimeMillis()); 
    } 
} 

MillisecondsEndpoint.java

package com.suture.self.ws; 

import javax.xml.ws.Endpoint; 

public class MillisecondsEndpoint { 

    public static void main(String[] args) { 
     Endpoint.publish("http://sutureself.com:9292/ws/milli", new MillisecondsImpl()); 
    } 
} 

當我在Glassfish服務器上(通過Eclipse)運行此操作時,管理控制檯會顯示通常的工作?wsdl?Tester端點,但不是我創建的端點。在瀏覽器中點擊該網址(http://sutureself.com:9292/ws/milli)也會返回「無法連接」錯誤。

如果我選擇「啓動」,然後我出兩個鏈接(一個用於在每個Glassfish的HTTP端口),但這些返回一個404

如果我只是嘗試打出了「上下文根」的路徑,那也不起作用。我需要一個入口點,但我無法找到它。

我錯過了什麼?

請注意!上述代碼中的所有sutureself.com實際上都是localhost,所以SO不喜歡你用localhost顯式地發佈URL。

有關如何配置我的設置的更多信息將愉快地添加。

回答

2

我之前也在SOAP WS中做過一個例子,但我有一個疑問,爲什麼您使用Glassfish服務器,因爲您正在通過主要方法部署WS,該方法將地址與您的服務綁定。我認爲沒有服務器是必需的。

只要按照這些步驟日食用於測試WS-

注:請關閉您的GlassFish服務器

1 - 創建一個新的Java項目(非動態的Web項目)

2 - 創建HelloWorld班級你好

package hello; 

import javax.jws.WebMethod; 
import javax.jws.WebService; 

@WebService 
public class HelloWorld{ 
    @WebMethod 
    public String method(String name) 
    { 

     return "hello " +name; 
    } 
} 

您不需要明確地創建接口。

3:現在你好

package hello; 

import javax.xml.ws.Endpoint; 

public class Publisher { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Endpoint.publish("http://LH.com:9292/ws/milli", new HelloWorld()); 
    } 

} 

現在你已經http://LH.com:9292/ws/milli束縛你的WS創建發佈類發佈的WebService。檢查它由http://LH.com:9292/ws/milli?wsdlhttp://LH.com:9292/ws/milli?test

+0

試圖改變它到9091(這是絕對免費的),仍然得到同樣的事情,「無法連接」。 – MeanwhileInHell

+0

@Suture自己檢查編輯答案。希望這會有所幫助。 lh.com = localhost –

+0

非常感謝您的更新。當你說「不需要服務器」時,我只是創建一個JAR(或WAR?)這個包並運行它,還是需要將它部署到Tomcat或Glassfish中?對不起,編寫Web服務的新手。 – MeanwhileInHell