Announcement

Collapse
No announcement yet.

Client-Zugriff auf LocalHome

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Client-Zugriff auf LocalHome

    Hallo,<br><br>ich arbeite mit einem <b>JBoss Enterprise-Server</b> mit <b>embedded Tomcat</b> für eine Webanwendung. Weil der EJB-Container und der Servlet-Container mit demselben Adressraum arbeiten, möchte ich für den Zugriff auf SessionBeans mit einem <b>LocalHome</b> Interface arbeiten. Leider bekomme ich die Erstellung des Contextes und die anschliessende Verbindung zum LocalHome-Object nicht richtig hin. Es sieht so aus, als würde die Anwendung keinen Kontakt zur SessionBean hinbekommen.<br><br>Daher meine Frage: hat jemand Demosourcen, die mir den Zugriff auf eine lokale SessioBean beispielhaft zeigen. - Der Zugriff über ein Remote-Object klappt fehlerfrei, jedoch erscheint mir der Zugriff über den JNDI-Dienst für eine lokale SessionBean zu aufwendig...<br><br>Freue mich auf hilfreiche Tipps, Martin

  • #2
    Hallo Martin,

    Der Zugriff funktioniert genauso wie über das remote interface. Allerdings muß für die session bean natürlich ein local/local-home interface in der ejb-jar.xml Datei und ein zugehöriger local-jndi-name in der jboss.xml Datei definiert sein.

    Also z.b. in ejb-jar.xml

    <PRE>
    &lt;session &gt;
    &lt;description&gt;&lt;/description&gt;
    &lt;display-name&gt;TestSessionBean&lt;/display-name&gt;
    &lt;ejb-name&gt;TestSession&lt;/ejb-name&gt;
    &lt;home&gt;de.test.ejb.interfaces.TestSessionHome &lt;/home&gt;
    &lt;remote&gt;de.test.ejb.interfaces.TestSession&l t;/remote&gt;
    &lt;local-home&gt;de.test.ejb.interfaces.TestSessionLocalHom e&lt;/local-home&gt;
    &lt;local&gt;de.test.ejb.interfaces.TestSessionLoc al&lt;/local&gt;
    &lt;ejb-class&gt;de.test.ejb.impl.TestSessionBean&lt;/ejb-class&gt;
    &lt;session-type&gt;Stateless&lt;/session-type&gt;
    &lt;transaction-type&gt;Container&lt;/transaction-type&gt;
    &lt;/session&gt;
    </PRE>

    Im jboss.xml steht für die bean:

    <PRE>
    &lt;session&gt;
    &lt;ejb-name&gt;TestSession&lt;/ejb-name&gt;
    &lt;jndi-name&gt;test/TestSession&lt;/jndi-name&gt;
    &lt;local-jndi-name&gt;test/TestSessionLocal&lt;/local-jndi-name&gt;
    &lt;/session&gt;
    </PRE>

    Der Zugriff erfolgt dann innerhalb der JBoss JVM über den local-jndi-name. Es müssen natürlich die local interfaces benutzt werden:

    <PRE>
    InitialContext context = new InitialContext();
    TestSessionLocalHome home = (TestSessionLocalHome)context.lookup("test/TestSessionLocal");
    TestSessionLocal testSession = home.create();

    // use bean

    testSession.remove();

    </PRE>

    Die Angabe der INITIAL_CONTEXT_FACTORY und PROVIDER_URL ist innerhalb der JBoss JVM nicht nötig. Außerdem kann man die Referenz einfach casten, ohne PortableRemoteObject.narrow zu benutzen.

    Gruß,

    Alwi

    Comment


    • #3
      Hallo Alwin,<br><br>herzlichen Dank für die schnelle und ausführliche Reaktion! Ich werd' Deine Beispiele direkt mal in meine Anwendung übertragen...<br><br>Gruß, Marti

      Comment


      • #4
        Hallo Alwin,<br><br>hab' Deine Beispiele mal in meine Anwendung eingebaut - klappt prima und bringt natürlich auch deutlichen Gewinn in Bezug auf die Zeit, die die Anwendung für das <i>lookup</i> braucht!<br><br>Also nochmal herzlichen Dank, Grüße Marti

        Comment

        Working...
        X