質問

今の間これに苦労しています。

私はEJB 3.0を準備しようとしています。アプリケーションサーバーとしてJBoss 5.1.0 GAを使用しています。私はローカルインターフェースを持つ非常に単純なステートレスセッションBeanと、Session Beanメソッドを呼び出す単純なJSP-Servletクライアントを開始しました。これまでにこれは、Serves Beanをサーブレットクラスに挿入するために@EJBアノテーションを使用しようとしています。

public class SampleServlet extends HttpServlet {

    @EJB
    private PersonLocal person;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        System.out.println("In servlet");       
        response.getWriter().write("Person Name : "+person.getName());
        System.out.println(person.getName());       
    }
}
.

default 設定でJBoss 5.1.0 GAを使用しています。 (私は all 構成で試してみました)

しかし、私はセッションBean注入へのNULL参照を取得するために使用されました。 1日以内に苦しんで、@EJBファイルで指定されたJNDIの設定を使用したjndi.propertiesアノテーションの代わりに醜いEJB 2.x JNDIルックアップメソッドを最後に試してみました。

今、JBoss 5.1.0 Gaが@EJB注釈を使用して注入をサポートしているかどうかをJBoss Docsで調べようとしましたが、具体的な答えが見つかりませんでした。だから誰かがそれがそうであるかどうか私に言うことができますか?原因私は本当にJNDIルックアップの上の注釈を好むでしょう(私はどういう意味ですか?)。私は何かがありません。

おそらくJBossフォーラムにこれを置くべきですが、..私はこの場所にはまっています。 - )

役に立ちましたか?

解決

Java EE 5認定であるため、JBoss 5.xによって確かにサポートされています。

実際には、章を確認することをお勧めします。11.サーブレット内のEJBインジェクションの紹介 JBoss EJB3チュートリアル、それらはステップの詳細な例の詳細を説明します。

と以下の注意事項に特に注意を払う:

注入は Webモジュール、web.xmlを使用する必要があります 2.5バージョンのWeb-app XSD:

<web-app version="2.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/web-app_2_5.xsd">
.

他のヒント

リモートEJBを使用して疑似困難がありましたが、Web-appのバージョンが原因ではなく、むしろ私のクライアントがEJBを見上げていました。

これは私のために働いていたものです:

//bean
@Stateless(name="xxxxService")
@Remote(xxxxRemote.class)
public class xxxxService implements xxxxRemote {

//interface - note that no annnotation is required
public interface xxxxRemote {

//in the client
  @EJB(mappedName="myJndiNameForxxxx") //for a local ejb, you could use 'beanName='
  private xxxxRemote xxxx;
.

私のプロジェクト(Mavenで構築された)では、クライアントはWebAppにあり、EJBはEJBプロジェクトにあり、その後EARプロジェクトに包まれています。JNDIマッピングはjboss.xmlで発生します。これは、EJBプロジェクト(My Project、SRC / Main / Resources / Meta-Inf)に住んでいて、次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<jboss xmlns:xs="http://www.jboss.org/j2ee/schema"
       xs:schemaLocation="http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
       version="5.0">
  <enterprise-beans>
  <session>
      <ejb-name>xxxxService</ejb-name>
      <jndi-name>myJndiNameForxxxx</jndi-name>
  </session>
  </enterprise-beans>
</jboss>
.

それがたくさんあるところ、そして今、私はクライアントからEJBにアクセスすることができます。これが誰かに役立つことを願っています。

まだ問題を抱えている場合は、JMXコンソールを調べてJNDIエントリが表示されていることを確認できます。'JBoss'> 'Service= JndiView'> 'list'を参照して、 'Invoke'ボタンをクリックしてください。サービスが正しくデプロイされている場合は、「ProxyFactory」の下のJNDI名(マイ例、MyJndinameForxxxx)が表示されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top