2012-02-19 119 views
0

最近幾天我搜索了整個互聯網來解決這個問題,但我還沒有解決這個問題。問題是this.I在Eclipse的靛藍實現了一個簡單的Web服務爲遵循創建一個Java Web服務客戶端

package com.testvtfour.ws; 

public class Customer { 

private String name; 

public void setName(String name) { 
    this.name = name; 
} 

public String getName() { 
    return name; 
} 
} 

Web服務的一部分是完美的。我使用Axis2作爲肥皂引擎& Tomcat 7作爲服務器。當我嘗試使用此Web服務時會發生問題。我在eclipse中創建了Web服務客戶端& Axis2自動生成「CusstomerCallBackHandler」&「CustomerStub」。以下是實施的客戶端

package com.testvtfour.ws; 
import java.rmi.RemoteException; 

import com.testvtfour.ws.CustomerStub.SetName; 
import com.testvtfour.ws.CustomerStub.GetNameResponse; 
public class TestClient { 
public static void main(String[] args)throws RemoteException{ 
    CustomerStub stub = new CustomerStub(); 
    com.testvtfour.ws.CustomerStub.SetName obj = new 
     com.testvtfour.ws.CustomerStub.SetName(); 
    obj.setName("Grant"); 
    stub.setName(obj); 

    com.testvtfour.ws.CustomerStub.GetNameResponse res = stub.getName(); 
    System.out.println(res.get_return()); 
} 
} 

但總是這打印「空」。這是爲什麼?我該如何解決這個問題? &我想知道這種客戶端的更新值可以在Android應用程序中顯示。因爲它是我項目的第二部分。請幫幫我。 謝謝。

+0

你讀過這一個:http://axis.apache.org/axis2/java/core/docs/userguide-creatingclients-xmlbeans.html並你確定結果應該在'get_return()'中? – 2012-02-19 13:20:58

+0

我相信一個web服務通常是無狀態的。這意味着'get'被調用的實例不同於'set',因此'name'爲空。你可以通過改變'return name;'來檢查是否問題出在'return'hello';' – 2012-02-19 13:22:25

+0

我不確定結果應該在get_return()中。我使用了一個eclipse解決方案。我應該用什麼? – Grant 2012-02-19 13:23:45

回答

2

Axis2 Web服務通常是無狀態的。這意味着getName()在不同於setName()的實例上被調用,因此name在嘗試檢索時爲null。

+0

你能解釋我應該如何調用getName()? – Grant 2012-02-19 13:34:11

+1

您的客戶沒有任何問題;它只是每次打電話時都會顯示新面孔的網絡服務。如果你想'getName'返回前一個'setName'的參數,那麼你必須使服務記住名字,或者使用會話管理,或者只是將它存儲到像數據庫或純文本文件這樣的持久存儲中。 – 2012-02-19 13:42:06

+0

謝謝! &我想知道的一件事...我可以使用android應用程序成功訪問MySQL數據庫嗎? – Grant 2012-02-19 13:56:16