0

EJB jar を OpenEJB リモート モードにデプロイしますが、クライアントが EJB [正しくデプロイされた EJB] をルックアップできません。プロジェクトをデバッグした後、openejb.client.moduleid に値が必要であることがわかりました。しかし、moduleidとは何ですか?このプロパティを設定するにはどうすればよいですか?

4

1 に答える 1

1

openejb.client.moduleidは、Java EE App Client で使用するためのものです。この ID は、アプリケーション クライアントの ID (META-INF/application-client.xml で指定) を参照し、デプロイされた特定の EJB モジュールの ID を参照しません。とはいえ、Java EE App Clients は避け、設定しないでくださいopenejb.client.moduleid

アプリのデプロイ時にログ出力に出力された JNDI 名を使用するのと同じくらい簡単なはずです。

import javax.ejb.Stateless;

@Stateless
public class HelloBean implements Hello {
    public String sayHello() {
        return "Hello World!!!!";
    }
}

次に、それをデプロイすると、デプロイヤーから次のような出力が表示されます。

dblevins@mingus:~/projects$ $OPENEJB_HOME/bin/openejb deploy hello.jar
Application deployed successfully at "hello.jar"
App(id=/home/dblevins/projects/hello.jar)
    EjbJar(id=hello.jar, path=/home/dblevins/projects/hello.jar)
        Ejb(ejb-name=HelloBean, id=HelloBean)
            Jndi(name=HelloBeanRemote)

そして、これはログに

2011-06-27 16:21:58,187 - INFO  - Configuring enterprise application: /home/dblevins/projects/hello.jar
2011-06-27 16:21:58,191 - INFO  - Enterprise application "/home/dblevins/projects/hello.jar" loaded.
2011-06-27 16:21:58,191 - INFO  - Assembling app: /home/dblevins/projects/hello.jar
2011-06-27 16:21:58,193 - INFO  - Jndi(name=HelloBeanRemote) --> Ejb(deployment-id=HelloBean)
2011-06-27 16:21:58,206 - INFO  - Created Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=My Stateless Container)
2011-06-27 16:21:58,206 - INFO  - Deployed Application(path=/home/dblevins/projects/hello.jar)

Jndi(name=HelloBeanRemote)クライアントは、次のような情報を使用して Bean を検索できます。

import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;

public class Client {
    public static void main(String[] args) throws Exception {
        Properties props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
        props.put(Context.PROVIDER_URL, "ejbd://127.0.0.1:4201");

        Context initialContext = new InitialContext(props);

        Hello hello = (Hello) initialContext.lookup("HelloBeanRemote");

        System.out.println(hello.sayHello());
    }
}
于 2011-06-27T23:32:12.250 に答える