2011-01-31 9 views
1

は、「Java Webサービスプロキシを使用して、Webサービスクライアントを作成するのは簡単ですテクニック "を示します。のInvoke Webサービスメソッド

Javaクライアントアプリケーションと同じことをするJavaアプレットを実行します。Webサービスにアクセスし、メソッドを呼び出して結果を返します。

Eclipseでコードを実行すると(右クリック>「Java Applet ..」として実行)、すべて正常に動作します。単純なhtmlページでアプレットを起動すると、アプレットが起動しますがデッドロック状態になります。 例外なしスローされ、MyWebServiceProxyクラスを作成する行で何もせずにプロセスがブロックされ、デフォルトのコンストラクタが呼び出されます。

誰もがこれで私を助けることができますか?

私はここにあなたが私はアプレット内でやっているよりよく理解できるようにいくつかのコードを貼り付けます。

public class SimpleWSApplet extends Applet { 

public void paint(Graphics g) 
{ 
    String msg = "Applet initialized"; 
    int i = 1; 
    g.drawString(msg, 20, 20*i++); 

    msg = "Error in applet"; 
    try { 
    Service service = new Service(); 
    Call call = (Call)service.createCall(); 
    call.setTargetEndpointAddress("http://localhost:8080/AppletWSTest/services/SimpleWS"); 
    call.setOperationName(new QName("http://soapinterop.org/", "getMessage")); 
    msg = (String)call.invoke(new Object[]{}); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    msg = "Error: "+e.getMessage(); 
    } 
    g.drawString(msg, 20, 20*i++); 
    //g.drawString(executeInvocation(msg), 20, 20*i++); 
} 
} 

明らかに自分のWebサービスは、「SimpleWS」と呼ばれ、私が呼び出すメソッドが「のgetMessage」と呼ばれています引数をとらず、Stringを返します。

ご存知のようにJavaアプレットがサンドボックス内で実行されている..

答えて

3

を助けてください。デフォルトでは、アプレットは元のサーバー以外のWebリソースにアクセスすることはありません。この種のリソースには、署名付きアプレットだけがアクセスできます。したがって、アプレットをsignする必要があります。

+0

証明書を要求するアプレットに署名しましたが、私が作成したfatjarの内部にあると確信している間に、org.apache.axisが自分のクラスを見つけることができません。アプレットタグの "アーカイブ"の属性にjarを含めるべきですか?はいの場合は、どちらか? – arielten

+1

あなたは署名付きのjarファイルに軸クラスを含めることにしましたか?これらのクラスは含まれていません。また、Webサービスにはjax-wsを使用できます。この方法では、apache軸。 –

関連する問題