SOAPサービスとRESTサービスがアプリケーションサーバの外でJersey(Grizzly)を使用して同じポートを共有できるようにする方法を知っている人はいますか?同じポートでSOAPサービスとRESTサービスをホストする方法は?
- 私のSOAPサービスがwww.someurl.com:port/soap/crm
- で私の残りのサービスは、これらのサービスは、同じを共有www.someurl.com:port/crm で
です同じベースURLではないので、そのポートで並行して実行できるはずです。しかし、ポートバインドエラーがあります。
これはすべてカスタムサービスアプリケーションにあり、web.xmlなどはありません。
RESTサービスはJerseyを使用しており、Soapサービスはエンドポイントに公開されたクラス 'ReceptionService'です。
URI soapUri = URI.create("192.168.0.0:1234\soap\Crm")
URI restUri = URI.create("192.168.0.0:1234\crm")
// START SOAP SERVICE
Object reception = getObjectResource(ReceptionService.class);
Endpoint e = Endpoint.publish(soapUri, reception);
// START REST SERVICE
ResourceConfig rc = new ResourceConfig().packages("company.rest");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(restUri, rc);
私はこれをしようとすると、グリズリーは 'java.net.BindExceptionを:使用中のすでに住所:バインド' 吐き出す:
@WebService(targetNamespace = "company.crm")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class Reception implements ReceptionService {
... methods
}
マイ
マイSOAPサービスの受信は、このような設定でありますレストサービスクラスには、いつものようにアノテートされています。
@Path("hello/{username}")
public class Hello { ... }
私はこれで少し初心者ですどんなポインタも評価されるでしょう。そして、私がアプリケーションサーバーを実行することを示唆しないでください。それはここでは問題ではありません - 問題は、他のWebサービスフレームワークに移動せずにポートバインドの問題を回避する方法です。
NOTE REのBOUNTY:私は恵みの勝者は、同じエンドポイント上で一緒にRESTのためにジャージーの使用方法を示すとJava SOAPサービス(注釈付きJAX-WS)だろう」THIS ENOUGH
を反復処理することはできません答えます。 RestおよびSoapアノテーション付きクラスを変更する必要はありませんが、HTTPサーバーコードの変更や設定変更が問題ない場合は、Jettyまたは他のアプリケーションサーバーに切り替えることはできません。ソリューションは100%埋め込みで実行する必要があります。 Java SEおよびJava Webサービスライブラリ」を参照してください。
さらに詳しい情報が役立ちますどのタイプのWebサーバー/アプリケーションサーバーを使用しますか? 'web.xml'はどのように見えますか? –
解決策を見つけましたか?私は同じ問題に直面している –
いいえ。私はまだそれらを別々のポートに保っています。私は自分のコードを改訂しなければならないでしょうし、時間も忍耐もありません。将来的にはそれを設定することができます。 –