1

EJB 2 を作成しました。これを JBoss-IDE 1.6 にデプロイし、それにアクセスするための JUnit テストを作成しました。クライアントに使用したコードは次のとおりです。

   public class DossierBeanTest extends TestCase {
         protected DossierHome dossierHome;
         protected Dossier dossier;

         public DossierBeanTest(String argo){
                super(arg0);
         }

         protected void setUp() throws Exception {
                super.setUp();
                Hashtable env=new Hashtable();


               env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
                env.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
                env.put(Context.PROVIDER_URL,"jnp://localhost:1199");
                Context context=new InitialContext(env);

                Object finderRef=context.lookup(dossierHome.JNDI_NAME);
                dossierHome=(DossierHome)PortableRemoteObject.narrow(finderRef,DossierHome.class);
                dossier=dossierHome.create();

          }

          public void testGetString() throws RemoteException {
                 assertEquals("Test",dossier.getTest());
          }

しかし問題は、このクライアントがエラーで失敗することです:

      javax.naming.CommunicationException: Could not obtain connection to any of these  
      urls: localhost:1199 and discovery failed with error :  
      javax.naming.CommunicationException: Receive timed out [Root Exception is 
      java.net.SocketTimeoutException: Receive timed out][Root exception is  
      javax.naming.CommunicationException: Failed to connect to server localhost:1199 
      ....


      at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1416) 

....

4

4 に答える 4

1

他の人がすでに指摘したように、JBossネーミングサーバーはデフォルトでポート1099でリッスンします。したがって、conf/jboss-service.xml(サービス名jboss:service=Naming)でこの値を変更しない限り、次のように記述する必要があります。

env.put(Context.PROVIDER_URL,"jnp://localhost:1099); 

そうは言っても、私は通常、JNDI環境設定をjndi.propertiesファイル(クラスパスに配置する)で提供することを好みます。あなたの場合、次の内容で:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099

そして、空のパラメーターコンストラクターを使用しますInitiatContext()

Context context = new InitialContext();

これにより、コードが移植可能になります(テストのコンテキストでは問題にならないかもしれませんが、私はそのようなものをハードコーディングしない方が好きです)。

于 2010-01-09T15:28:52.697 に答える
0

間違ったポート番号を使用していると思います。これは、コマンドの出力を確認することで最初に確認できますnetstat -a。ポート1199でリッスンしているプロセスがない場合は、JBoss設定を検査する必要があります。

于 2009-10-07T16:43:08.040 に答える
0

デフォルトのポートは1099ですが、変更しましたか?そうでない場合は、1199からポートを切り替えてみてください。

また、Linuxを使用している場合は、localhostの代わりに127.0.0.1を試してみることをお勧めします。

于 2009-10-07T16:43:47.150 に答える