非常に基本的な WS を作成しました。LoggingHandler、Test、TestImpl、および TestPublisher があります。パブリッシャーは以下のエンドポイントを作成します。
import javax.xml.ws.Endpoint;
public class TestPublisher {
public static void main(String[] args) {
LoggingHandler handle = new LoggingHandler();
Endpoint ep = Endpoint.publish( "http://localhost:8060/message/hello",
new TestImpl() );
ep.getBindings().getHandlerChain().add( new LoggingHandler() );
System.out.print( handle.toString() );
}
}
私の Test インターフェイスは @WebService と @WebMethod を使用し、「String getHello( String str );」のみを実行します 私の TestImpl はテストを実装し、@WebService(endpointInterface="my package location") を使用し、メソッド "public String getHelloWorld( String str ){ return "Hello " + str; } のみを持っています。私のハンドラーには handleMessage、handleFault、および close があります。このコードも掲載できますが、それは役に立たないと思います。
同じ (dev) RH6 PC で localhost:port/message/hello にアクセスすると、問題なく動作します。私は「こんにちは私の名前」を取得します。localhost:port/message/hello?wsdl で wsdl ファイルを取得することもできます
他の PC、Linux、またはWindowsからアクセスしようとすると、タイムアウトまたは「Web ページを表示できません」というエラーが表示されます。そのため、コードを変更せずに、ポート 8061 (新しいポート) から WS ポート [ここ] [link3] へのトラフィックを監視およびルーティングするために、Eclipse で tcp/ip モニターをセットアップしました。
結果:サービス(dev)を実行しているPCを除いて、他のPCから8060にアクセスできません。だから私はブラウザを他のPCのポート8061(tcp / ipモニター)に向けると、メッセージが正常に返されます!Java Web サービスに転送するためにモニターを実行する必要がありますか?
私のRH6ボックスでは、ファイアウォールやWebサーバーを実行しておらず、仕事用ネットワークにいます。tcp/ip モニターを使用せずに、Tomcat6 を正常に開始し、他の PC から 8080 に到達できます。