2012-02-07 49 views
4

我創建了一個名爲TimeServerBean的簡單Web服務。它工作正常,GlassFish服務器正在運行,我可以從瀏覽器訪問WSDL文件。注意這是在本地主機上完成的。Web服務客戶端從getMyWSPort獲取NullPointerException

接下來,我創建了一個新項目並創建了一個Web服務客戶端,並將該URL提供給WSDL文件。然後我生成了一些類(JAX-WS)。 在我的客戶端類我有這樣的代碼:

public class SimpleClient { 

    @WebServiceRef(wsdlLocation = "wsdl url here") 
    static TimeServerBean_Service service; 
    private TimeServerBean bean; 

    public SimpleClient() { 
     bean = service.getTimeServerBeanPort(); 
    } 
    //methods here 
} 

雖然我得到空當我打電話的getTimeServerBeanPort。在此期間,服務器已啓動並正在運行。有一些明顯的錯誤嗎? TimeServerBeanTimeServerBean_Service是從WSDL生成的類。

+0

該方法返回null,或者你得到一個'NullPointerException'? – millimoose 2012-02-07 01:24:02

+0

NullPointerException – Giannis 2012-02-07 01:26:32

+0

我沒有看到try/catch塊。如果你還沒有,請添加一個,看看異常(我猜你可能*會得到一個異常)。 – paulsm4 2012-02-07 01:26:45

回答

4

兩個建議:

  1. 一定會把你的方法在try/catch

  2. 假設service本身爲空,然後嘗試做一個明確的service.create()而不是使用@WebServiceRef註解。這裏有一個很好的例子(WebSphere中,但相同的原理):

http://www-01.ibm.com/support/docview.wss?uid=swg21264135

+0

原來我簡單的必須使用netbeans的插入代碼功能完成所有工作。 – Giannis 2012-02-11 21:30:03

+0

@latusaki - 很高興你有它的工作:)就我個人而言,我使用Eclipse:a)Eclipse適用於J2EE的東西以及Android的東西,b)Eclipse更加友好的IBM(和我一起使用IBM產品),以及c)Eclipse傾向於擁有更大的「生態系統」(更多第三方附加組件)。恕我直言... – paulsm4 2012-02-11 22:46:26

0

的@WebServiceRef註釋僅在某些類類型的支持。示例有JAX-WS端點實現類,JAX-WS處理程序類,Enterprise JavaBeans類和servlet類。此批註在@Resource批註的相同類類型中受支持。有關支持的類類型的完整列表,請參閱Java Platform,Enterprise Edition(Java EE)5規範。