Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

EJBをFirewallを通して呼ぶには?

現在、Firewallの外からどうやったらEJBを呼ぶか研究しています。Lan内ならリモートPCからEJBを呼ぶことに成功しました。Firewallはすでにポート
4444をあけたんですがどうもうまくいけません。たぶん設定の問題なんでしょうがあまり資料が内容で現在戦っています。

InitialContext initial = new InitialContext();
System.out.println("initial="+ initial);  
            
Object o  = initial.lookup("corbaname:iiop:205.54.179.116:4444#ejb/SFHelloBean");
            
PortableRemoteObject.narrow(objref, CartHome.class);
    
SFHelloRemoteHome home = ( SFHelloRemoteHome )PortableRemoteObject.narrow( o, SFHelloRemoteHome.class);
            
SFHelloRemote helloworld = home.create();
          
System.out.println( helloworld.SayHello());

12

回答

82954

閲覧

12件の回答

評価

0

やったことはないんですが、そのIPアドレスはどこのものですか?
ルータのグローバルアドレスだとしたら、ポートフォワードは設定してありますか?


管理人さんへ:プライベートでないIPが書いてあるのはどうかと思うので、***.***.***.***とでも書き換えるほうがいいと思います。

評価

0

資料がないということですが

恐らく(一般的なものという見方をして@あなたが)ファイアウォールやルータと行ったものの仕組み等の情報を探せばいいんじゃないかと思いますけど

資料がないというのは探すものが的外れであるからとかいうことはないですか?
或いは使っている機器とか、直接答えが書かれているものがないということで、ないということにしてしまっているのか・・

>Lan内ならリモートPCからEJBを呼ぶことに成功しました。
とも言っているところから、既にJavaの範疇を越えてしまっているような気もしたりしないでもないです
LAN内からでも外部からでも、恐らくJavaの受け口としての設定とかは(相手に対して適切な制限を掛けることができていないためとかでなければ)出てこなさそうにも思えたりしますけど・・

もう一度、ちゃんと探しなおしてみては?

評価

0

>やったことはないんですが、そのIPアドレス
>はどこのものですか?
どこのものでもありません。

まあさん
CORBAの問題なんで分かる人には
分かると思ったんですけど。

評価

0

あぁ それは「Javaの範疇」に対してよね?

>どこのものでもありません。
だと、余計混乱の素になりかねないので
目隠ししておいた方がいいでしょうね
プライベートアドレスなら別に混乱もないでしょうけど

もしかしてエラーメッセージとかもシッカリ書かれてた?と思って見直してみたけどないようだし

いちおレスとしてのものは書いたつもりではいるけど
>うまくいけません。
の部分を具体的に書いた方がいいかもしれませんね

示されたコードはクライアント側のだろうと思うけど
うまく行かないということは何か例外が吐かれていると思うし
ファイアウォールも越えなくてサーバー側まで届いてないのか
(ファイアウォールにログが残ると思うけど)
サーバーまで届いているけど帰れないのか
(届いたというログは取れるんだろうし、帰れないというログも取れるだろうし)

何処に原因があるのか絞ってあるのか
ファイアウォールは壁,ルータは何処へ流すかのルーティングをそれぞれするわけで(或いは一体になってて)、どういう構成にしてるかも含めないと話を聞く側もよく解らないかも

評価

0

>どこのものでもありません。
どこのものでもないなら、どこから引っ張ろうというんですか…。

>CORBAの問題なんで
内側からつなげられて外側からつなげられないのなら、それはCORBAの問題ではありません。

評価

0

IPアドレスは本当のものにいくつか足したものです。以後気をつけます。

ファイアーフォール自体にポート(4444)開いていて自動的にローカルのPCにFORWARDしてくれる設定になっています。


LAN内で成功すると

INFO: "IOP00710299: (INTERNAL) Successfully created IIOP listener on the specified host/port: all interfaces/1947"
<<このポートがいつも違っているのが気になります。

Firewallを通すと
IPは未公開ということでトリプルエックスに
しました。おせわがせしました。

Dec 11, 2006 11:32:43 AM com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl <init>
WARNING: "IOP00410201: (COMM_FAILURE) Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: xxx.xxx.xxx.xxx; port: 4444"
org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2257)
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2278)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:208)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:221)
        at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:104)
        at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:153)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:127)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:244)
        at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
        at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
        at com.sun.jndi.cosnaming.CNCtx.setOrbAndRootContext(CNCtx.java:345)
        at com.sun.jndi.cosnaming.CNCtx.initUsingCorbanameUrl(CNCtx.java:321)
        at com.sun.jndi.cosnaming.CNCtx.initUsingUrl(CNCtx.java:247)
        at com.sun.jndi.cosnaming.CNCtx.createUsingURL(CNCtx.java:85)
        at com.sun.jndi.url.iiop.iiopURLContextFactory.getUsingURLIgnoreRest(iiopURLContextFactory.java:56)
        at com.sun.jndi.url.iiop.iiopURLContext.getRootURLContext(iiopURLContext.java:44)
        at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:182)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at javaapplication1.Main.main(Main.java:51)
Caused by: java.lang.RuntimeException: java.net.NoRouteToHostException: No route to host: connect
        at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:336)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:191)
        ... 16 more
Caused by: java.net.NoRouteToHostException: No route to host: connect
        at sun.nio.ch.Net.connect(Native Method)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
        at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
        at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:320)
        ... 17 more
javax.naming.CommunicationException: Cannot connect to ORB [Root exception is org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No]
        at com.sun.jndi.cosnaming.CNCtx.setOrbAndRootContext(CNCtx.java:362)
        at com.sun.jndi.cosnaming.CNCtx.initUsingCorbanameUrl(CNCtx.java:321)
        at com.sun.jndi.cosnaming.CNCtx.initUsingUrl(CNCtx.java:247)
        at com.sun.jndi.cosnaming.CNCtx.createUsingURL(CNCtx.java:85)
        at com.sun.jndi.url.iiop.iiopURLContextFactory.getUsingURLIgnoreRest(iiopURLContextFactory.java:56)
        at com.sun.jndi.url.iiop.iiopURLContext.getRootURLContext(iiopURLContext.java:44)
        at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:182)
        at javax.naming.InitialContext.lookup(InitialContext.java:351)
        at javaapplication1.Main.main(Main.java:51)
Caused by: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 201  completed: No
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2257)
        at com.sun.corba.ee.impl.logging.ORBUtilSystemException.connectFailure(ORBUtilSystemException.java:2278)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:208)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:221)
        at com.sun.corba.ee.impl.transport.SocketOrChannelContactInfoImpl.createConnection(SocketOrChannelContactInfoImpl.java:104)
        at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.beginRequest(CorbaClientRequestDispatcherImpl.java:153)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.request(CorbaClientDelegateImpl.java:127)
        at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.is_a(CorbaClientDelegateImpl.java:244)
        at org.omg.CORBA.portable.ObjectImpl._is_a(ObjectImpl.java:112)
        at org.omg.CosNaming.NamingContextHelper.narrow(NamingContextHelper.java:69)
        at com.sun.jndi.cosnaming.CNCtx.setOrbAndRootContext(CNCtx.java:345)
        ... 8 more
Caused by: java.lang.RuntimeException: java.net.NoRouteToHostException: No route to host: connect
        at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:336)
        at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.<init>(SocketOrChannelConnectionImpl.java:191)
        ... 16 more
Caused by: java.net.NoRouteToHostException: No route to host: connect
        at sun.nio.ch.Net.connect(Native Method)
        at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:464)
        at java.nio.channels.SocketChannel.open(SocketChannel.java:146)
        at com.sun.enterprise.iiop.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:320)
        ... 17 more

評価

0

>java.net.NoRouteToHostException: No route to host: connect
が出てるので、やはり転送がうまくいっていないようです。

…思ったんですが、もしや、LAN内のPCからルータのグローバルアドレスを指定していますか?
それならルータの機械的におそらくつながりません。
設定が合っていれば、今のLAN以外のところからの接続(ダイヤルアップするとか)であればつながるでしょう。

評価

0

>設定が合っていれば、今のLAN以外のところからの
>接続(ダイヤルアップするとか)であればつながる
>でしょう。
テストはダイヤルアップでやってみました。

評価

0

ではいったんJavaから離れて。

telnet ***.***.***.*** 4444

はつながりますか?
つながらなければ、それこそJavaの話ではありません。

評価

0

二つのPCにポートモニターを
インストールしたところクライアント
からサーバーへ(ポート4444)きて
います。しかしながら
サーバーがクライアントと話をするときに
勝手にポートを指定しているので問題
みたいです。(これJ2EEの仕様みたいです)

なのでデモのためすべてのポートを開く
ことで解決しました。

評価

0

あー、ftpのアクティブモードと同じですね。それには思い至りませんでした。
ということは、実質的にはWANとは会話できないようですね。
ftp同様、パッシヴモードがあるなら別ですが。

評価

0

mioさん、

長々と有難うございます。

>ftp同様、パッシヴモードがあるなら別ですが。
その辺も含めて調べてみます。

有難うございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。