2009-09-22 10 views
0
public class Pojo { 
    private String value; 

    public static void printValue() { 
     System.out.println("value=" + value); 
    } 
} 

私は次のようにWebサービスからこれを返すようにしたいでしょう:jax-wsのWebメソッドは静的メソッドを持つオブジェクトを返しますか?

@WebService 
public class MyService { 
    @WebMethod 
    public Pojo getPojo() { 
     return new Pojo(); 
    } 
} 

はすべきで、できない、またはいけない、私ができるかどうかの決定的な答えを見つけるように見えることはできません。

答えて

2

データのみが有線を介して送信されます。静的メソッドまたは非静的メソッドは送信されません。

受信側でデータを同じクラスにバインドする場合は、あなたのメソッドは元に戻しますが、SOAPはそれとは関係ありません。それはあなた自身のトリッキーです。もちろん、他の言語で書かれたクライアント(C#、python、...)にはあなたのメソッドはありません。

P.S.返送するオブジェクトのクラスには常にメソッドがあります。あなたのPojoは、Objectから暗黙的にサブクラス化されているため、toString()、hashCode()などがあります。 JAX-WSは気にしません。

1

号はそれについて考える:

  1. Webサービスは、ワイヤを介して送信されるどのようなプラットフォームに依存しない
  2. であることを意味しているだけでXML(または他の形式)でデータ

だから、どうやって静的な方法で電信を送ることができるでしょうか? Java以外のクライアントは、Webサービスの応答をどのように解釈できますか?

+0

これは私が考えたものです。静的メソッドがワイヤを介して送信されるかどうかは気にしません。たとえば、私のアプリケーションで必要なだけのユーティリティメソッドである可能性があります。 これはエラーが発生するかどうかという質問です。私は静的メソッドはWSDLで利用できないことを理解しています。 この時点では、静的メソッドを使用することは悪い考えです。ユーティリティクラスがより良い場所になります。 メソッドが論理的にクラス自体に適合する場合、ユーティリティクラスを作成したくないだけです。 – les2

+0

どうすればそのような定期的な方法を送るつもりですか?データはワイヤを介して送信されます。 –

+0

"私はクライアントからアクセスできる"という意味で、 "電信で送られた"というわけではありません。 基本的には、クライアントがWebサービス呼び出しの結果を受け取ったときに、それを操作するための便利なメソッドがあると便利な場合があります。これはどのように一般的に行われますか(ベストプラクティスは何ですか)? – les2

関連する問題