1

問題は次のとおりです。プロジェクトを JBoss 4.2 から JBoss 7.1 に移行しようとしています。以前は、ejb ルックアップは次の方法で行われていました。

    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory");
    props.put(Context.SECURITY_PRINCIPAL, new SimplePrincipal(login));
    props.put(Context.SECURITY_CREDENTIALS, password);
    InitialContext ctx = new InitialContext(props);
    SomeClass someClass = (SomeClass) ctx.lookup("appName/SomeClass/local");

そして、すべてがうまくいきました。現在、実装は次のとおりです。

InitialContext ctx = new InitialContext();
SomeClass someClass = (SomeClass) ctx.lookup("java:app/jarModuleName/SomeClass!com.example.SomeClass");

ejb インターフェイス:

@Local
public interface SomeClass(){
...
}

ejb クラス:

@Stateless(name = "SomeClass")
public class SomeClassImpl implements SomeClass() {
...
}

ブート中に jboss はバインディングが次のように表示されます。

java:app/jarModuleName/SomeClass!com.example.SomeClass

しかし、その後の lookup() は NameNotFoundException を引き起こします。

パッケージ構造は次のとおりです。

appName.ear
|
+--jmx-services.sar (where lookup method is invoked)
|
+--jarModuleName.jar (where ejb is located.)

jarModuleName の ejb-jar.xml の内容:

<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
    <session>
        <ejb-name>SomeClass</ejb-name>
        <ejb-class>com.example.SomeClassImpl</ejb-class>
    </session>
</enterprise-beans>

@Startup および @Singleton アノテーションではなく、jboss-service.xml および start()/stop() メソッドを使用して、「古いスタイル」で MBean を作成することも指定できます。

4

1 に答える 1

1

と の両方@Local@Remote2 つの個別のインターフェイスで使用します。 を使用することを強くお勧めし@EJBます。

また、EJB を別の jar ファイルに入れてデプロイします。

このフォルダ構造は私のために働いています:

yourApp.ear
{
 -lib
 -META-INF
  {
   application.xml
  }
 -yourEJB.jar
 -yourWebContent.war
}

META-INF フォルダーに application.xml が必要です。その例を次に示します。

<?xml version="1.0" encoding="UTF-8"?>
<application version="5" xmlns="http://java.sun.com/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd">
  <module>
    <ejb>
      yourEJB.jar
    </ejb>
  </module>
  <module>
    <web>
      <web-uri>
        yourWar.war
      </web-uri>
      <context-root>
        yourAppRoot (use it as localhost://yourAppRoot)
      </context-root>
    </web>
  </module>
</application>


yourApp.ear を JBoss にデプロイします。


アプリで ejb-jar.xml を使用していません。

于 2013-08-19T14:26:51.007 に答える