Basic JNDI et EJB question

Hello,
I have a client accessing an EJB deployed in an EJB container.
import javax.naming.*;
Context ctx = getInitialContext();
DemoHome dhome = (DemoHome) ctx.lookup("MaDemo.DemoHome");(getInitialContext returns a Context object and there is no directory server on the machine).
My questions are as follows: Why don't I need a directory server? Am I not using JNDI here? Don't you need a directory server when you use JNDI?
Thanks in advance,
Balteo.

in short no you don't always need a directory server. You use JNDI with JMS operations and there is no directory server associated with that. JNDI (Java Naming and Directory Services) has many uses.
One such use is with JMS,and yet another is with LDAP. Seems like you are just doing a lookup with in the namespace.

Similar Messages

  • Basic JNDI Lookup Config Question

    I have the following in a jndi.properties file:
    java.naming.factory.initial=
    _ com.evermind.server.ApplicationClientInitialContextFactory
    java.naming.provider.url=ormi://localhost/<applicationname>
    java.naming.security.principal=admin
    java.naming.security.credentials=123
    It is expecting what for an <applicationname>?
    The name of the client application(The client that invokes my session bean)?
    The name of the package where the client exists?
    The name fo the database schema?
    Any answers?
    Thanks,
    Jim

    Also, is there a way to configure these properties using the Sun App Server 7 in the Sun Studio directly?
    Thanks.

  • Stateless Session Bean + EJB Question + Jboss

    Hello,
    If I have a stateless session bean on a linux machine and it works locally what do i need to do to access a method in the session bean from a remote windows machine.
    I would like to be able to execute my client jar file on a windows machine and have it access the jboss server on the linux machine. what do i need to do?
    i have the session bean working locally on both windows and linux machine. do i need to to have a JSP/Servlet to access the session bean? can the session bean not be accessed directly? what should my classpath look like? do I need to include extra jar files in my client jar file.?
    Thanks,
    Joyce

    Thanks guys for the help but I am still a little lost.
    My Client windows machine has the client jar file and all the other jar files. This is my client class
    package helloworld.client;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import java.util.Hashtable;
    import java.util.Properties;
    import helloworld.interfaces.HelloWorldHome;
    import helloworld.interfaces.HelloWorld;
    public class HelloClient
         public static void main(String[] args)
              Hashtable prop = new Hashtable();
              prop.put ("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
              prop.put ("java.naming.provider.url","jnp://172.16.220.160:1099");
              prop.put ("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
              try
                   Context ctx = new InitialContext(prop);
                   Object obj = ctx.lookup("ejb/helloworld/HelloWorld");
                   System.out.println(obj);
                   HelloWorldHome home = (HelloWorldHome)javax.rmi.PortableRemoteObject.narrow(obj, HelloWorldHome.class);
                   HelloWorld helloWorld = home.create();
                   String str = helloWorld.sayHelloEJB("JOYCE is COOL");
                   System.out.println(str);
                   helloWorld.remove();
              catch(Exception e)
                   e.printStackTrace();
    I get a NullPointer ie the home object is null. The IP address is the IP of the Linux machine that has Jboss running on.
    Questions are:
    1. Do I need to have Tomcat running on my client machine if I am to connect via HTTP? Does this alter my client code.?
    2. My JNDI lookup is what is causing the problem. Does my jboss.xml and my ejb-jar.jar look okay to you.
    jboss.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS//EN" "http://www.jboss.org/j2ee/dtd/jboss.dtd">
    <jboss>
    <enterprise-beans>
    <session>
    <ejb-name>helloworld/HelloWorld</ejb-name>
    <jndi-name>ejb/helloworld/HelloWorld</jndi-name>
    </session>
    </enterprise-beans>
    <resource-managers>
    </resource-managers>
    </jboss>
    ejb-jar.jar
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar >
    <description>No Description.</description>
    <display-name>Generated by XDoclet</display-name>
    <enterprise-beans>
    <!-- Session Beans -->
    <session >
    <description><![CDATA[No Description.]]></description>
    <ejb-name>helloworld/HelloWorld</ejb-name>
    <home>helloworld.interfaces.HelloWorldHome</home>
    <remote>helloworld.interfaces.HelloWorld</remote>
    <ejb-class>helloworld.session.HelloWorldBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Bean</transaction-type>
    </session>
    <!--
    To add session beans that you have deployment descriptor info for, add
    a file to your merge directory called session-beans.xml that contains
    the <session></session> markup for those beans.
    -->
    <!-- Entity Beans -->
    <!--
    To add entity beans that you have deployment descriptor info for, add
    a file to your merge directory called entity-beans.xml that contains
    the <entity></entity> markup for those beans.
    -->
    <!-- Message Driven Beans -->
    <!--
    To add message driven beans that you have deployment descriptor info for, add
    a file to your merge directory called message-driven-beans.xml that contains
    the <message-driven></message-driven> markup for those beans.
    -->
    </enterprise-beans>
    <!-- Relationships -->
    <!-- Assembly Descriptor -->
    <assembly-descriptor >
    <!-- finder permissions -->
    <!-- transactions -->
    <!-- finder transactions -->
    </assembly-descriptor>
    </ejb-jar>
    Do I need RMI ? Do I need to concern myself with CORBA? All Im looking for is a step by step to understanding what I need to configure? Is their some way I can debug?
    Thanks alot,
    Joyce

  • J2EE JNDI-00009 EJB Reference "ejb/SessionEJBCalled" could not be resolved

    When load (run) the following EJB (JDev 10.1.3.1.0 embedded server) loads with no problem:
    package project2;
    import javax.ejb.Stateless;
    @Stateless
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");   }
    When load the following, only difference is name attribute for the @Stateless annotation:
    package project2;
    import javax.ejb.Stateless;
    @Stateless(name="SessionEJBCalled")
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");    }
    Get the following error message - Why?
    2006-08-24 15:48:54.640 WARNING J2EE JNDI-00009 EJB Reference "ejb/SessionEJBCalled" could not be resolved. Allowing J2EEContext creation to continue anyway
    Finally - If I specify the name as per the following all is well:
    package project2;
    import javax.ejb.Stateless;
    @Stateless(name="SessionEJBCalledBean")
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");   }
    Would be appreciated if someone could tell me what is going on?
    Thanks - Ken

    When load (run) the following EJB (JDev 10.1.3.1.0 embedded server) loads with no problem:
    package project2;
    import javax.ejb.Stateless;
    @Stateless
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");   }
    When load the following, only difference is name attribute for the @Stateless annotation:
    package project2;
    import javax.ejb.Stateless;
    @Stateless(name="SessionEJBCalled")
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");    }
    Get the following error message - Why?
    2006-08-24 15:48:54.640 WARNING J2EE JNDI-00009 EJB Reference "ejb/SessionEJBCalled" could not be resolved. Allowing J2EEContext creation to continue anyway
    Finally - If I specify the name as per the following all is well:
    package project2;
    import javax.ejb.Stateless;
    @Stateless(name="SessionEJBCalledBean")
    public class SessionEJBCalledBean implements SessionEJBCalledLocal {
    public SessionEJBCalledBean() {    }
    public void display() {  System.out.println("In called - Project2");   }
    Would be appreciated if someone could tell me what is going on?
    Thanks - Ken

  • Do i have to use JNDI with EJBS?

    Hi
    I want to use JNDI to lookup a system which i will send messages to using JMS. I would like to have some java classes on Tomcat to do the job. But...whenever i hear about JNDI it is always in relation to EJBs. Can i only use JNDI with EJBS?
    If i can use JNDI is there anything important i need to know about.
    Thanks in advance!
    San H.

    You can definitely use JNDI outside of EJB's - in particular, it's a great interface for dealing with LDAP servers, even securely, and can also be used for DNS interfacing, COS, RMI registries, etc.
    While JNDI was chosen as the method by which J2EE components can locate other components in a distributed environment, it's by no means limited to that task :) It's a wonderful API, and in terms of things you need to know, most everything is covered fairly well at the JNDI tutorial in the various trails that are mapped out there.
    http://java.sun.com/products/jndi/tutorial/
    Good luck!
    James
    James Manning | Principal Engineer
    Porivo Technologies, Inc.
    919.806.0566 | [email protected]
    http://www.porivo.com/
    Measuring end-to-end Web performance.
    Register for a FREE Performance appraisal:
    http://www.porivo.com/peerReview/eval.html

  • HTTP Basic authentication on EJB 3.0 based web service

    How do I enable HTTP Basic authentication on EJB 3.0 based web services for OAS? Does any one have a sample solution ?
    I manually updated oracle-webservices.xml file to include the following:
    <ejb-transport-security-constraint>
    <soap-port/>
    <role-name>users</role-name>
    <transport-guarantee>NONE</transport-guarantee>
    </ejb-transport-security-constraint>
    <ejb-transport-login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>jazn.com</realm-name>
    </ejb-transport-login-config>
    When I use SOAP UI to test the web service I get the following error.
    403 Forbidden
    Error initializing security, security-role not found: users

    I still get the 403 forbidden error message. I do not get the second part of the error message though.

  • Basic JNDI questions, mostly

    Below are some questions I have in regards to EJB development and deployment. Mostly
    these are JNDI questions, with some WebLogic ones mixed in. I have a web app that
    I created, and which works, but I’m not exactly sure why it works. I’d like answers
    to these questions, but I’d also like to know if this set of questions indicates
    a particular set of training that I’m missing, and, if so, where I could get it.
    Q: In an EJB method that uses another EJB, when do I use “java:comp/env/ejb/PersonBean”
    versus “ejb/PersonBean” versus just “PersonBean”? The web app that I wrote uses
    “PersonBean” and it works.
    Q: Why do we have to use PortableRemoteObject? Why can’t we just directly cast
    it to “PersonHome”? How does it know to narrow the name “PersonBean” to the home
    interface, and not to the remote interface instead?
    Q: For the DataSource, I’m looking up “java:comp/env/jdbc/bahiawebDB” in the code
    instead of just “bahiawebDB” like I do for the EJB. Why the inconsistency?
    Q: In “ejb-jar.xml” the “ejb-name” is just “PersonBean” instead of “ejb/PersonBean”,
    but my “res-ref-name” is “jdbc/bahiawebDB”. Why?
    Q: On the WebLogic server admin tool, under “mydomain > JDBC Data Sources”, should
    my data source Name or JNDI Name be “jdbc/bahiawebDB” or just “bahiawebDB”? Why?
    Q: On the WebLogic server admin tool, under “mydomain > JDBC Data Sources”, what’s
    the difference between “Name” and “JNDI Name”? Who uses “Name”? Is it just for
    humans? Is the JNDI name supposed to exactly match the “res-ref-name” in the ejb-jar.xml
    file?
    Q: On WebLogic, why are Data Sources and Connection Pools separate? Why would
    you want to map multiple Data Sources to the same Connection Pool?
    Gary Kephart
    New Century Mortgage
    [email protected]

    Below are some questions I have in regards to EJB development and deployment. Mostly
    these are JNDI questions, with some WebLogic ones mixed in. I have a web app that
    I created, and which works, but I’m not exactly sure why it works. I’d like answers
    to these questions, but I’d also like to know if this set of questions indicates
    a particular set of training that I’m missing, and, if so, where I could get it.
    Q: In an EJB method that uses another EJB, when do I use “java:comp/env/ejb/PersonBean”
    versus “ejb/PersonBean” versus just “PersonBean”? The web app that I wrote uses
    “PersonBean” and it works.
    Q: Why do we have to use PortableRemoteObject? Why can’t we just directly cast
    it to “PersonHome”? How does it know to narrow the name “PersonBean” to the home
    interface, and not to the remote interface instead?
    Q: For the DataSource, I’m looking up “java:comp/env/jdbc/bahiawebDB” in the code
    instead of just “bahiawebDB” like I do for the EJB. Why the inconsistency?
    Q: In “ejb-jar.xml” the “ejb-name” is just “PersonBean” instead of “ejb/PersonBean”,
    but my “res-ref-name” is “jdbc/bahiawebDB”. Why?
    Q: On the WebLogic server admin tool, under “mydomain > JDBC Data Sources”, should
    my data source Name or JNDI Name be “jdbc/bahiawebDB” or just “bahiawebDB”? Why?
    Q: On the WebLogic server admin tool, under “mydomain > JDBC Data Sources”, what’s
    the difference between “Name” and “JNDI Name”? Who uses “Name”? Is it just for
    humans? Is the JNDI name supposed to exactly match the “res-ref-name” in the ejb-jar.xml
    file?
    Q: On WebLogic, why are Data Sources and Connection Pools separate? Why would
    you want to map multiple Data Sources to the same Connection Pool?
    Gary Kephart
    New Century Mortgage
    [email protected]

  • EJB 3.0 and jndi lookup (simple question)

    hi all,
    i am newbie on Weblogic Application Server and i have some issues,
    i have weblogic application server 10.0, also i have oracle timesten in-memory database, i have configured datasource and deploy my ejb 3.0 application, but i could not done jndi lookup?
    here is my example:
    1. one stateless session bean :
    import javax.ejb.Remote;
    @Remote
    public interface InsertSubscriber {
         public void insertSubscriber(SubscriberT subscriberT);
    } 2. here is it's implementation :
    @Remote(InsertSubscriber.class)
    @Stateless
    public class InsertSubscriberBean implements InsertSubscriber {
         @PersistenceContext(unitName = "TimesTenDS")
         private EntityManager oracleManager;
         public void insertSubscriber(SubscriberT subscriber)
              try {
                   System.out.println("started");
                   oracleManager.persist(subscriber);
                   System.out.println("end");
              } catch (Exception e) {
                   e.printStackTrace();
    }3 and my test client :
    public class Client {
         public static void main(String[] args) {
              Context ctx = null;
              Hashtable ht = new Hashtable();
              ht.put(Context.INITIAL_CONTEXT_FACTORY,
                        "weblogic.jndi.WLInitialContextFactory");
              ht.put(Context.PROVIDER_URL, "t3://192.9.200.222:7001");
              try {
                   ctx = new InitialContext(ht);
                   InsertSubscriber usagefasade = (InsertSubscriber) ctx
                             .lookup("ejb.InsertSubscriberBean");               
              } catch (NamingException e) {
                   e.printStackTrace();
              } finally {
                   try {
                        ctx.close();
                   } catch (Exception e) {
                        e.printStackTrace();
    }what i did incorrect ???
    i got error like this : Name not fount exception
    when i tried to view jndi tree on weblogic server application console i found this :
         Binding Name:     
    TimestenExampleTimestenExample_jarInsertSubscriberBean_InsertSubscriber     
         Class:     
    test.InsertSubscriberBean_o7jk9u_InsertSubscriberImpl_1000_WLStub     
         Hash Code:     
    286     
         toString Results:     
    weblogic.rmi.internal.CollocatedRemoteRef - hostID: '2929168367193491522S::billing_domain:AdminServer', oid: '286', channel: 'null'what does it mean how i can done lookup to jndi ?
    Regards,
    Paata Lominadze,
    Magticom LTD.
    Georgia.

    Hi All,
    I am using the weblogic cluster with session replication and EJB 2.0 with Local entity beans.
    for fail-over session should be replicated to another server so we can achive the same session if 1st server fails.
    Suppose i m using two managed server(server1,server2) in the cluster.I am storing the object of class ABC into session and object contains the instance of Local-EntityBean home but i put that as a transient.I have also override the readObject and write object method.
    when write object is called on 1st server,readObject method should be called on second server so we will be sure that session is replicating properly.
    pleaase find the code below : -
    public IssuerPageBean() {
    initEJB();
    private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException {
    stream.defaultReadObject();
    initEJB();
    initializeCommonObject();
    private void writeObject(java.io.ObjectOutputStream stream) throws IOException {
    stream.defaultWriteObject();
    private void initEJB() {
    try {
    ic = new InitialContext();
    issuerHome = (LocalIssuerHome) ic.lookup("java:comp/env/Issuer");
    } catch (NamingException e) {
    e.printStackTrace();
    in my case if i am calling the constructor IssuerPageBean(),it calls the initEJB() method and lookeup the entity local home properly but when readObject method is called on another server only initEJB() method is called directly and getting the exception below :
    WARNING: Error during create -
    javax.naming.NameNotFoundException: remaining name: env/ejb/Client
    at weblogic.j2eeclient.SimpleContext.resolve(Ljavax/naming/Name;Z)Ljavax/naming/Context;(SimpleContext.java:35)
    at weblogic.j2eeclient.SimpleContext.resolve(Ljavax/naming/Name;)Ljavax/naming/Context;(SimpleContext.java:39)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljavax/naming/Name;)Ljava/lang/Object;(SimpleContext.java:57)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljavax/naming/Name;)Ljava/lang/Object;(SimpleContext.java:57)
    at weblogic.j2eeclient.SimpleContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(SimpleContext.java:62)
    at weblogic.jndi.factories.java.ReadOnlyContextWrapper.lookup(Ljava/lang/String;)Ljava/lang/Object;(ReadOnlyCont
    extWrapper.java:45)
    at weblogic.jndi.internal.AbstractURLContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(AbstractURLContext.jav
    a:130)
    at javax.naming.InitialContext.lookup(Ljava/lang/String;)Ljava/lang/Object;(InitialContext.java:347)
    at com.lb.equities.veda.tools.salesvault.jsp.ClientPageBean.initEJB()V(ClientPageBean.java:218)
    at com.lb.equities.veda.tools.salesvault.jsp.ClientPageBean.readObject(Ljava/io/ObjectInputStream;)V(ClientPageB
    ean.java:191)
    at java.lang.LangAccessImpl.readObject(Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown
    Source)
    at java.io.ObjectStreamClass.invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject()Ljava/lang/Object;(Unknown Source)
    at java.util.HashMap.readObject(Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.lang.LangAccessImpl.readObject(Ljava/lang/Class;Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown
    Source)
    at java.io.ObjectStreamClass.invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Z)Ljava/lang/Object;(Unknown Source)
    at java.io.ObjectInputStream.readObject()Ljava/lang/Object;(Unknown Source)
    at weblogic.common.internal.ChunkedObjectInputStream.readObject()Ljava/lang/Object;(ChunkedObjectInputStream.jav
    a:120)
    at weblogic.rjvm.MsgAbbrevInputStream.readObject(Ljava/lang/Class;)Ljava/lang/Object;(MsgAbbrevInputStream.java:
    121)
    at weblogic.cluster.replication.ReplicationManager_WLSkel.invoke(ILweblogic/rmi/spi/InboundRequest;Lweblogic/rmi
    /spi/OutboundResponse;Ljava/lang/Object;)Lweblogic/rmi/spi/OutboundResponse;(Unknown Source)
    at weblogic.rmi.internal.BasicServerRef.invoke(Lweblogic/rmi/extensions/server/RuntimeMethodDescriptor;Lweblogic
    /rmi/spi/InboundRequest;Lweblogic/rmi/spi/OutboundResponse;)V(BasicServerRef.java:492)
    Please help .
    Thanks in Advance.
    Edited by hforever at 03/04/2008 7:28 AM

  • 4 Basic JNDI questions I have - please help :-)

    Hello JNDI lovers and haters as i feel at the moment :P
    Question 1: I get a warning message from my eclipse 3.3:
    NamingEnumeration is a raw type. References to generic type NamingEnumeration<T> should be parameterized     LDAP     MainWindow.java     line 133     1184255055215     3297this warning refers to this code line:
    NamingEnumeration enm = ctx.search(baseDN,filter,controller);What does that warning mean and how can i make my code proper so i get no warning?
    Question 2: I have nowhere in my JNDI book found any hint that i must close an NamingEnumeration instance. So for what is this close() methode and if i have to close an instance of the NamingEnumeration class, when do i have to use it exactly??
    Question 3: When i make 2 Context searches like ctx.search(); etc... do i have to use everytime a new ctx instance for every search i do ? like ctx1.search(), for the first search and ctx2.search() for the 2nd search??
    Or can i use ONLY 1 instance of a Context class for several searches ? Logically one Context should be enough as i have only one entry point for my ldap tree and its always the same root...
    Question 4:
    Why does my Duke stars not decrease do i have unlimited of them? well not so a serious question as Adler_Steven deserves them all :D
    Would be very pleased guyz if you could help out a JNDI wannabe pro ;-)
    EDIT:
    i found this information on the sun forum:
    javax.naming.NamingEnumeration enum = ctx.search("",satts);
    if ( enum.hasMoreElements() ) {
    SearchResult firstresult = (SearchResult)enum.nextElement();
    attrs = firstresult.getAttributes();
    } else {
    throw new Exception("No Entries returned");
    enum.close(); // without this, ctx.close() did not release the thread
    ctx.close();as you can see above the enum is closed and the guy say s if its not closed you might get trouble as the thread gets not released ?? BUT i have seen so many code examples where the ppl dont close the enum instance ?? HOw This ?

    ok thanks

  • Does mapping to JNDI for ejb-refs have a performance impact?

    Does mapping to JNDI names for ejb-refs have a performance impact for
    WLS6.1?
    In the ejb-jar.xml deployment descriptor, you can define an ejb reference as
    follows:
    <ejb-ref>
    <ejb-ref-name>ejb/AccountHomeRemote</ejb-ref-name>
    <ejb-ref-type>Entity</ejb-ref-type>
    <home>com.package structure.AccountHomeRemote</home>
    <remote>com.package structure.AccountRemote</remote>
    <!-- <ejb-link>AccountBean</ejb-link>-->
    </ejb-ref>
    Now, optionally, you can use the ejb-link element - or - you can, in the
    weblogic DD, specify a JNDI name that the ejb-ref maps to.
    Using a JNDI name buys you some flexibility. If, for some reason, the jar is
    divided, you dont have to convert ejb-link's to JNDI names. The question is:
    Is there a performance cost in doing this?
    Cheers

    Hi Aashish,
    Thanks for your quick reply. it was helpful, but i am not using RFC's. Correct me if i am wrong, but i have explained the scenarios in detail below.
    Scenario 1. Synchronous
    1) PI Picks file from a common folder.
    2) PI does a data mapping and sends the data to ECC.
    3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
    4) The abap proxy code executes a function module and sends the response as an internal table back to PI.
    5) PI receives the response and places it in a text/csv file and places it back to another folder.
    I assume that the above would be possible only using BPM. What i understand is that in order for an interface to receive and send data, abstract mappings are to be used, and for this BPM is required. We do not have any conversions etc. its just a simple matter of receiving an internal table from ECC and creating a file to place in the folder.
    I also understand that BPM could have bottlenecks due to queue and cache issues, messages might be pending, or lost etc.
    Scenario 2. Asynchronous
    1) PI Picks file from a common folder.
    2) PI does a data mapping and sends the data to ECC.
    3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
    4) ABAP Proxy code executes the same function module and calls a seperate outbound interface and passes the values to it. This would be used in sending the response back.
    5)  PI receives the response from the second interface and places it in a text/csv file and places it back to another folder.
    I would like to know which would be the better approach. Documentation/references to support your claims would be much appreciated.
    Cheers,
    Mz

  • Remote client accessing ejb - question

    This may be a very simplistic question, but here goes -
    scenario: I have a J2EE application running on a server Y with session beans/entity beans.
    I need a remote client on machine X to access EJB objects on Y.
    I have set the initial conext with INITIAL_CONTEXT_FACTORY, PROVIDER_URL etc...
    But, in order to narrow the reference of the object returned by lookup() method, I need to instantiate the Home object of my session (or entity) bean ...
    here's my problem: How do I instantiate EJBHomeInterface or EJBRemoteInterface, when they do not exist on the remote client machine?? (does this have something to do with the stub??)
    THANKS!

    This answer assumes you're using Weblogic, although most any other EJB container has a facility for this. Basically you need to distribute a client jar file with the client. This client jar is created during the EJB compile/deployment process and creates a jar separate from the normal jar file associated with your deployment. This jar file contains the class stubs you need to call for and use EJB's on a remote client.
    I hope this makes some sense.
    SeanB

  • Beginner's EJB Question

    I've been going through the J2EE tutorial and generally understand how it works but I have a question about application clients. I get the general concept that a client uses JNDI to look up the environment entry to find an EJB. However, I think my question is "how does the JNDI entry get set in the application client's machine?" In a web client it makes sense to me because the JSP hits the server (and the server is where the JNDI entry is). On the application client the only way I can think that the entry gets there is through maybe a jar file created when the application is compiled on the app server. My guess is that that's packaged with the application client and each user who installs the application client has to put the jar in their classpath. Is that correct?
    In a very much related question, I'm also wondering how the client calls methods on the enterprise beans. I assume that the jar files have some code in them that make a network connection to the app server. I just wanted to verify that my understanding of how this all works is correct.

    I've been going through the J2EE tutorial and
    generally understand how it works but I have a
    question about application clients. I get the
    general concept that a client uses JNDI to look up
    the environment entry to find an EJB. However, I
    think my question is "how does the JNDI entry get set
    in the application client's machine?" In a web
    client it makes sense to me because the JSP hits the
    server (and the server is where the JNDI entry is).
    On the application client the only way I can think
    k that the entry gets there is through maybe a jar
    file created when the application is compiled on the
    app server. My guess is that that's packaged with
    the application client and each user who installs the
    application client has to put the jar in their
    classpath. Is that correct?
    Not really. JNDI binding exists on server only. When client does a lookup it connects to server's naming service (via remote call) and asks an object with specific JNDI name.
    In a very much related question, I'm also wondering
    how the client calls methods on the enterprise beans.
    I assume that the jar files have some code in them
    m that make a network connection to the app server.
    I just wanted to verify that my understanding of how
    w this all works is correct.
    Yes, it's correct. Code that makes a network connection is called a stub (or client stub). For some app. servers (SUN AS) you need to generate stubs of EJB's and put them into clien't classpath. For others (JBoss) it's not required, because a stub can be downloaded from server.

  • Easy JNDI + Connection Pool Question

    This is an easy question:
    Once I get the object represented by my connection pool from the
    Weblogic JNDI tree, how do I get a connection from the returned object
    of type weblogic.common.internal.ResourceAllocator?
    I keep getting ClassCastExceptions. I have tried
    ConnectionPoolDataSource, Connection, and DataSource.
    String conPool = "weblogic.jdbc.connectionPool.demoPool";
    try {
    Object obj = ctx.lookup(conPool);
    msg(DEBUG,"FROM LOOKUP" + obj.getClass().getName());
    //DataSource ds = (DataSource)ctx.lookup(conPool);
    //con = ds.getConnection();
    } catch (NameNotFoundException e) {
    // binding does not exist
    msg(ERROR,"BINDING DOES NOT EXIST",e);
    } catch (NamingException e) {
    // a failure occurred
    msg(ERROR,"NAMING FAILURE OCCURED",e);
    } catch (Exception e) {
    msg(ERROR,"SOME RANDOM ERROR",e);
    Thanks,
    -Jacob

    "Jacob Meushaw" wrote in message
    Once I get the object represented by my connection pool from the
    Weblogic JNDI tree, how do I get a connection from the returned object
    of type weblogic.common.internal.ResourceAllocator?
    I keep getting ClassCastExceptions.
    DataSource ds = (DataSource)ctx.lookup(conPool);I think, you must use narrow operation:
    Object reference = ctx.lookup(conPool);
    DataSource ds =
    (DataSource) PortableRemoteObject.narrow (ds,DataSource.class);
    I haven't got time to check it, but I hope that works.
    Wojtek

  • EJB question: How to use abstract class in writing a session bean?

    I had written an abstract class which implements the session bean as follow:
    public abstract class LoggingSessionBean implements SessionBean {
    protected SessionContext ctx;
    protected abstract Object editRecord(Object obj) throws Exception;
    public LoggingSessionBean()
    super();
    private final String getBeforeUpdateImage(Object obj) throws Exception {
    // implement the details of extracting the backup image ...
    public void setSessionContext(SessionContext ctx)
    this.ctx = ctx;
    private final void writeThisImageToDatabase(String aStr) {
    // connect to database to write the record ...
    public final Object update(final Object obj) {
    try {
    final String aStr = getBeforeUpdateImage(obj);
    writeThisImageToDatabase(aStr);
    editRecord(obj);
    } catch (Exception e) {
    ctx.setRollbackOnly();
    This abstract class is to write the backup image to the database so that other session beans extending it only need to implement the details in editRecord(Object Obj) and they do not need to take care of the operation of making the backup image.
    However, some several questions for me are:
    1. If I write a class ScheduleSessionBean extending the above abstract class and the according 2 interfaces ScheduleSession and ScheduleSessionHome for this session bean (void update(Object obj); defined in ScheduleSession), do I still need to write the interfaces for LoggingSession and LoggingSessionHome?
    2. If I wrote the interface LoggingSession extending EJBObject where it defined the abstract methods "void update(Object obj);" and "void setSessionContext(SessionContext ctx);", that this meant I needed to write the ScheduleSession to implement the Logging Session?
    3. I used OC4J 9.0.4. How can I define the ejb-jar.xml in this case?

    Hi Maggie,
    1. do I still need to write
    the interfaces for LoggingSession and
    LoggingSessionHome?"LoggingSessionBean" can't be a session bean, because it's an abstract class. Therefore there's no point in thinking about the 'home' and 'remote' interfaces.
    2. this
    meant I needed to write the ScheduleSession to
    implement the Logging Session?Again, not really a question worth considering, since "LoggingSessionBean" can't be an EJB.
    3. I used OC4J 9.0.4. How can I define the
    ejb-jar.xml in this case?Same as you define it for any version of OC4J and for any EJB container, for that matter, since the "ejb-jar.xml" file is defined by the EJB specification.
    Let me suggest that you create a "Logging" class as a regular java class, and give your "ScheduleSessionBean" a member that is an instance of the "Logging" class.
    Alternatively, the "ScheduleSessionBean" can extend the "Logging" class and implement the "SessionBean" interface.
    Good Luck,
    Avi.

  • Simple Java EJB question.

    When it comes to EJB v3 Remote and Local interfaces,
    (With JBoss EJB Container Software in mind, for this question,)
    -Does the Remote interface for the EJB include method signatures from the Bean class
    -that are to be seen
    -that are to be hidden?
    -Does the Local interface for the EJB include method signatures from the Bean class
    -that are to be seen
    -that are to be hidden?
    Which is which for
    -EJB 2.1 ?
    -EJB 3.x ?
    - is EJB 3.x reverse compatible in that it allows use of the javax.ejb.* interfaces,
    and would accept a EJB 2.1 approach, or does it force one to use Annotations
    exclusively?
    Edited by: Zac1234 on Jul 21, 2010 5:21 PM

    muiajc wrote:
    I know this is a simple question, but I can't search for the answer to this because it involves syntax that Google and the like don't seem to search for..
    I am trying to figure out some Java code that I have found. I would like to know what:
    a[--i] and a[++j] mean.
    It mean increase/decrease the int i/j by 1. This is done before it gets you the value of a[]. for example if i=5 and you said a[--i] it is really a[4] and i is now equal to 4;

Maybe you are looking for

  • Displaying HTML page in an application

    Hello all, I want to display an html page in my application. I looked into HotJova HTML Component but Sun doesnt offer this component anymore. Does anyone have any idea of how can I complete this task. Any help will be appreciated. Thank you

  • If I erase a game and I want to play it again, do I keep the same profile?

    I have no intentions in starting over again. Because I erased some of my games (Contract Killer, Reign of Dragons, ect.) and I want to play them again. So if I download them again, do I have the same profile?

  • AS3 Putting Buttons Inside Movie Clip

    I am practicing AS3 (after years of AS2) and am having trouble having a button inside a movie clip talk to another movie clip on the main timeline. Here is the code: OneButton.addEventListener(MouseEvent.CLICK, OneButtonClicked); function OneButtonCl

  • Expansion of bins

    I have a bunch of bins for my present project. When I expand them to reveal the clips I am unable to scroll all the way down and keep on scrolling I am stopped abrutply by the bottom of the window when it should continue to then end but it does not.

  • Cativate 5 for Mac Software Simulation Scrolling Problem

    When recording software simulations, the program is not correctly recording the screen when I scroll.  For example, I am recording my voice then telling the trainees that they need to scroll to the bottom of the screen and I use my mouse to do so.  W