2012-01-04 5 views
0

JBoss 5.1にデプロイされたejb2アプリケーションに接続するスイングクライアントがあります。お客様がインターネットで利用できるようにするための特別な要件があります。次のようにスイングクライアント - JBoss 5.1のHTTP経由のEJB2参照

展開アーキテクチャは、

swing_clientある - > extranet_ip |ファイアウォール| - > iis7_machine - > jboss5.1_machine。クライアントで

JNDIプロパティ に、Context.PROVIDER_URL = HTTP、次の通りである:// extranet_ip:9180 /呼び出し/ JNDIFactory Context.INITIAL_CONTEXT_FACTORY = org.jboss.naming.HttpNamingContextFactory

をするとき、クライアントこの構成では正常に動作しますイントラネット内にあります。しかし、インターネット(エクストラネット)では動作しません。

最初に試してみたところ、「接続が拒否されました」というエラーが表示されました さまざまなフォーラムで投稿を見た後、ファイルserver \ deploy \ http-invoker.sar \ META-INF \ jboss-service.xmlをinvokerURLのextranet_ipを反映します。

残念ながら、私は以下のエラーが発生しています。

org.jboss.remoting.CannotConnectException:サーバーへの接続を取得できません。 InvokerLocator [socket:/ 10.200.1.193:4546 /?dataType = invocation & enableTcpNoDelay = true & marshaller = org.jboss.invocation.unified.marshall.InvocationMarshaller & unmarshaller = org.jboss.invocation.unifiedのソケット接続を確立できません。 JBoss ServerマシンのイントラネットIPアドレスです。

remoting-jboss-beans.xmlのtrasportパラメータをhttpに変更しようとしましたが、その時点でクライアントはイントラネットとエクストラネットの両方で動作していません。

誰かがこの問題を解決する方法をお勧めします。あるいは、JBossでRMI over Httpを実装する他の方法はありますか?

更新:解決策として、展開アーキテクチャを次のように変更する必要がありました。

swing_client - > extranet_ip | firewall | - > jboss5.1_machine

ここで、JBossアプリケーションサーバーはファイアウォールを介して直接公開されます。その後、remoting-jboss-beans.xml内のclientConnectAddressをエクストラネットIPに更新します。また、このアドレスのファイアウォールでポート8080 & 4446を開きます。

次のようにjnidプロパティを使用すると、このようにスイングクライアントが動作しています。

に、Context.PROVIDER_URL:http://extranet_ip:8080/invoker/JNDIFactory
Context.INITIAL_CONTEXT_FACTORY:org.jboss.naming.HttpNamingContextFactory

しかし、まだ非標準のポートを開くために必要と公開する必要がないソリューションを探して直接アプリケーションサーバー。

答えて

0

長い闘いの後、私は自分の問題の解決策を見つけました。ソリューションはstandardjboss.xmlのEJBコンテナの呼び出し側の型をhttpに変更することでした。呼び出し元がhttpの場合、http-invoker.sarの設定を使用してリモートバインディングが行われます。

関連する問題