Servlet + Local EJBS

Hi,
I'm about to deploy the Servlet using the Local EJB interfaces. The problem
I've encountered is that when I try access the local home interface I get
the ClassCastException. But object returned does indeed implement the local
home interface. I suppose, there are some repeated classes both in ejb and
web deployments. Can someone tell me how to make my servlet access the same
classes as deployed local ejbs?
Thanks in advance,
Andrzej

Ok, that's the reason.
Thanks.
You can only access local EJBs within the application. Are you deployingthe
servlet and ejb together in an ear file?
-- Rob
Andrzej Dmoch wrote:
Hi,
I'm about to deploy the Servlet using the Local EJB interfaces. The
problem
I've encountered is that when I try access the local home interface Iget
the ClassCastException. But object returned does indeed implement thelocal
home interface. I suppose, there are some repeated classes both in ejband
web deployments. Can someone tell me how to make my servlet access thesame
classes as deployed local ejbs?
Thanks in advance,
Andrzej

Similar Messages

  • Very Urgent !!! Exception in looking up Local EJB from Servlet in WSAD 5.1

    Hi,
    I have a servlet and a local EJB. The servlet and EJB are deployed on same application server but in different J2EE applications i.e. different EAR files.
    When I lookup an EJB with remote interfaces from servlet everything works fine. But when I try to lookup EJB with local interfaces from
    Servlet I get following Exception.
    Exception Stack: -
    ========================================================
    avax.naming.NameNotFoundException: Context: localhost/nodes/localhost/servers/server1, name: TestLocalHome: First component in name TestLocalHome not found. Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.ipcos.WsnOptimizedNamingImpl.do_resolve_complete_info(WsnOptimizedNamingImpl.java:968)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.cosbase.WsnOptimizedNamingImplBase.resolve_complete_info(WsnOptimizedNamingImplBase.java:1399)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.WsnOptimizedNaming._NamingContextStub.resolve_complete_info(Unknown Source)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.jndicos.CNContextImpl.cosResolve(CNContextImpl.java:3491)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1519)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.jndicos.CNContextImpl.doLookup(CNContextImpl.java:1480)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.jndicos.CNContextImpl.lookupExt(CNContextImpl.java:1187)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.jndicos.CNContextImpl.lookup(CNContextImpl.java:1067)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.naming.util.WsnInitCtx.lookup(WsnInitCtx.java:132)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at javax.naming.InitialContext.lookup(InitialContext.java:360)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at org.apache.jsp._DomainClient._jspService(_DomainClient.java:95)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:344)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:669)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:767)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:983)
    [12/8/05 14:14:05:047 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:564)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439)
    [12/8/05 14:14:05:062 IST] 7debf35b SystemErr R      at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672)
    ========================================================
    Please help asap.
    Regds
    VJ.

    The ejb spec only defines local ejb access within the same application. It's possible some app servers support access from a different application but it wouldn't be portable, nor would it work within the J2EE SDK or Sun Java System App Servers. To access a local ejb from a web component or ejb , define an ejb-local-ref in the client component's standard .xml file (web.xml or ejb-jar.xml) and use the ejb-link element to specify the ejb-name of the target ejb.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Unable to lookup local EJB reference (ejb 2.1)

    Hi All,
    I am trying to do a simple local EJB lookup of ejb2(XDCGIVTCursorHoldableJDBCReader) from ejb1(XDCGIVTBatchController), Both the ejbs are located in the same EAR. This is weblogic 10
    I am running into name-not-found exceptions.
    Here is my ejb-jar.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <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">
         <enterprise-beans>
              <session>
                   <ejb-name>XDCGIVTBatchController</ejb-name>
                   <home>xxx.BatchJobControllerHome</home>
                   <remote>xxx.BatchJobController</remote>
                   <ejb-class>xxx.BatchJobControllerBean</ejb-class>
                   <session-type>Stateless</session-type>
                   <transaction-type>Container</transaction-type>
                   <ejb-local-ref>
                        <ejb-ref-name>ejb/local/XDCGIVTCursorHoldableJDBCReader</ejb-ref-name>
                        <ejb-ref-type>Session</ejb-ref-type>
                        <local-home>xxx.CursorHoldableJDBCReaderLocalHome</local-home>
                        <local>xxx.CursorHoldableJDBCReaderLocal</local>
                        <ejb-link>XDCGIVTCursorHoldableJDBCReader</ejb-link>
                   </ejb-local-ref>
                   <resource-ref>
                        <res-ref-name>wm/BatchWorkManager</res-ref-name>
                        <res-type>commonj.work.WorkManager</res-type>
                        <res-auth>Container</res-auth>
                        <res-sharing-scope>Shareable</res-sharing-scope>
                   </resource-ref>
              </session>
              <session>
                   <ejb-name>XDCGIVTCursorHoldableJDBCReader</ejb-name>
                   <local-home>xxx.CursorHoldableJDBCReaderLocalHome</local-home>
                   <local>xxx.CursorHoldableJDBCReaderLocal</local>
                   <ejb-class>xxx.CursorHoldableJDBCReaderBean</ejb-class>
                   <session-type>Stateful</session-type>
                   <transaction-type>Bean</transaction-type>
                   <resource-ref>
                        <res-ref-name>jdbc/IVTdb</res-ref-name>
                        <res-type>javax.sql.DataSource</res-type>
                        <res-auth>Container</res-auth>
                        <res-sharing-scope>Unshareable</res-sharing-scope>
                   </resource-ref>
              </session>
         </enterprise-beans>
    </ejb-jar>
    and here is my weblogic-ejb-jar.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    ** This file was automatically generated by
    ** EJBGen WebLogic Server 10.3 SP0 Fri Jul 25 16:30:05 EDT 2008 1137967
    -->
    <weblogic-ejb-jar
    xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">
    <weblogic-enterprise-bean>
    <ejb-name>XDCGIVTBatchController</ejb-name>
    <stateless-session-descriptor>
    </stateless-session-descriptor>
         <jndi-name>ejb/XDCGIVTBatchController</jndi-name>
    </weblogic-enterprise-bean>
    <weblogic-enterprise-bean>
         <ejb-name>XDCGIVTCursorHoldableJDBCReader</ejb-name>
         <local-jndi-name>XDCGIVTCursorHoldableJDBCReader</local-jndi-name>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    I am using the following code to do the lookup
    Object hm = new InitialContext().lookup("java:comp/env/ejb/local/XDCGIVTCursorHoldableJDBCReader);
    I have also tried looking up with
    java:comp/env/ejb/XDCGIVTCursorHoldableJDBCReader with no success.
    Any ideas? suggestions? what am I doing wrong?
    Thanks in advance!!
    Neeraj

    Hey Matt,
    So the flow is as follows
    1. Servlet looks up EJB1
    2. EJB1 starts a commonj.work using the commonj.WorkManager
    3. The worker tries to lookup EJB2 using java:comp/env (and thats the same place I tried to dump the namespace)
    Could it be that I am getting a new namespace in the commonj worker ? This doesn't seem to be the case in IBM WebSphere.
    Thanks for your help!
    Neeraj

  • Servlets and EJBs

    Hi,
    My question, is possible to access from servlet some EJB through EJB's local interface, even these participate two different containers?
    Regards
    Krzysztof

    I am not that good with EJB , but I donot think so
    EJB Local interfaces only work from othe EJB's AFAIK,

  • Challenge: call local ejb from remote ejb on weblogic 9.2

    Hi ALL,
    How do I call to local ejb from remote ejb object. The jar file is deployed on weblogic server 9.2, if you want get it http://geocities.yahoo.com.br/lindembe/BEAProject.jar and the source code are http://geocities.yahoo.com.br/lindembe/BEAProject.zip. It is a sample app with two ejb that works so good on JBOSS, JOnAS, but BEA Weblogic.....
    The complete problem you watch http://forum.java.sun.com/thread.jspa?threadID=768718&messageID=4387570#4387570
    or
    http://forums.bea.com/bea/message.jspa?messageID=600043148&tstart=0

    Your code in SigemFacadeBean should just do:
    InitialContext ctx = new InitialContext();
    when you lookup the local EJB. (This will work on all app servers. There's no need to put an app-server specific intial context factory in your code.)
    Also, you can remove the jndi-name setting for the local ejb from your weblogic-ejb-jar.xml. jndi-name is only applied to remote ejbs.
    -- Rob
    WLS Blog http://dev2dev.bea.com/blog/rwoollen/

  • How to create a local EJB 3.0 and execute in JDeveloper?

    Hello guys!
    I'm brand new with EJB 3.0.
    I would like to know how can I create a @Local EJB and a client in JDeveloper?
    It's was ease to create a @Remote EJB and the sample java client, how can I do same to @Local EJB?
    I'm using JDeveloper 10.1.3.1.0.3914
    Thanks in advance.

    Creating a @Local EJB is just as easy, just replace the @Remote by @Local, or checkmark local in the EJB wizard.
    You can create a client for a @Local EJB, as local methods aren't available outside the EJB container, that's why they are called local. A test client doesn't run in the ejb container, and therefor cannot access the local ejb methods.
    If you want to test the local methods of an ejb, you should create another ejb which calls the first.

  • A problem determining the JNDI Name of a local EJB with WL 8.1

    Hi,
    I created a very simple local EJB and deployed it with Weblogic8.1. When I test
    it in the Weblogic server admin page, I got the following message:
    "The EJB MyLocal has not been tested successfully. There was a problem determining
    the JNDI Name of the given bean."
    Can anyone help figure out the problem?
    Thanks
    Henry

    Does the ejb have a target server specified?
    Does the Ejb have a Jndi binding as specified in the <local-jndi-name></local-jndi-name>
    element of weblogic-ejb-jar.xml?
    thanks,
    Deepak
    "Henry" <[email protected]> wrote:
    >
    >
    Hi,
    I created a very simple local EJB and deployed it with Weblogic8.1. When
    I test
    it in the Weblogic server admin page, I got the following message:
    "The EJB MyLocal has not been tested successfully. There was a problem
    determining
    the JNDI Name of the given bean."
    Can anyone help figure out the problem?
    Thanks
    Henry

  • Fail to lookup the local EJB by JNDI in Managed Server

    Hi all,
    I currently in a deep problem, and can't figure out the cause of it. It just annoying me for week.
    In my app, I have binded to the local ejb to JNDI (let's say "ejb/CustomerLocal"), then the client lookup the Local EJB by the following code.
    localIc = new InitialContext();
    home = (EJBLocalHome)localIc.lookup("ejb/CustomerLocal");
    It works well as I do development in the Domain Admin Server. However, when I do the System Integration Test and deploy my app to the managed server, the app fail. It just can't do the Local EJB lookup. Following is the exception.
    javax.naming.NameNotFoundException: Unable to resolve 'ejb/CustomerLocal' Resolved ejb[Root exc
    eption is javax.naming.NameNotFoundException: Unable to resolve 'ejb.CustomerLocal' Resolved ejb
    ]; remaining name CustomerLocal'
    Does anybody know the cause of it and have solution?
    Thanks a lot

    Hi,
    Just now I replicated the same problem what you are facing. I created one managed server. When I deployed my ejb to admin server I did not get any problem. But when I deploy the same into my managed server I got Naming Exception. Because I did n/t specify Context.PROVIDER_URL. A provider URL contains bootstrap server information that the initial context factory can use to obtain an initial context. So when you deploy EJB on another server, you have to get the Naming service from that server. Hence provider URL must pointing to that server. So I included following statements before lookup my ejb in managed server.
    Properties p=new Properties ();
    p.put (Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    p.put (Context.PROVIDER_URL,"t3://localhost: 7003");
    Context ctx=new InitialContext (p);
    FacadeHome home=(FacadeHome) ctx.lookup ("ejb/CustomerLocal");
    In my case managed server port number is 7003. Now onwards managed server (Port number 7003) will provide ‘Naming Service’, not by admin server (port number 7001), which is default.
    Note: Context.PROVIDER_URL— specifies the URL of the WebLogic Server that provides the name service. The default is t3://localhost: 7001. When you are not specified it will assume that POVIDER_URL is t3://localhost: 7001 this is nothing but your admin server in your case. However, a JNDI client may need to access a name space other than the one identified in its environment. In this case, it is necessary to explicitly set the java.naming.provider.url (provider URL) property used by the InitialContext constructor.
    I hope it helps.
    Regards,
    Kuldeep Singh.

  • Unable to find Local Ejb home in websphere 6.0

    Its really anoying as am unable to guess . I am invoking an EJB locally using code as below . The Ejb works fine while testing with UniversalTestClient However when i try to invoke it from my Client it gives jndi error.
    Am using RAD 6.0 IDE and WebSphere6.0 and Ejb 2.1
    I tried calling ejb providing different jndi names as below but it doesn't work .
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
    env.put (Context.PROVIDER_URL, "corbaloc:iiop:localhost:2809/");
    try{
    InitialContext icontext = new InitialContext(env);
    // Object result = icontext.lookup("local:ejb/DefaultSession");
    // Object result = icontext.lookup("D7VRC491Node01Cell/nodes/D7VRC491Node01/servers/server1/TestEj b/ejb/com/test/ejbs/DefaultSessionLocalHome");
    // Object result = icontext.lookup("local:ejb/ejb/com/test/ejbs/DefaultSessionLocalHome");
    Object result = icontext.lookup("ejb/com/dhsmv/ejbs/DefaultSessionLocalHome");
    DefaultSessionLocalHome localHome = (DefaultSessionLocalHome) result;
    DefaultSessionLocal localSession = (DefaultSessionLocal) localHome.create();
    String strTest = localSession.welcome(" Hello World ");
    System.out.println(" Retrieved ejb method ..." + strTest);
    I get an exception that first component of jndi name is not available. Please suggets where is the problem hiding. Is there any thing wrong with jndi name .
    Thanks.

    The CORBA error could suggest your bootstrap port is already being used by another process. Try changing it to something else.
    Assuming your webconsole works - its something like this (although off the top of my head can't be sure...)
    Select servers from the menu on the left, then select, your server.
    From the newly loaded page, on the right hand side, you should see a link called "Ports". Modify your bootstrap port, usual value is 2809.
    How does that work?

  • Problem in calling Local EJB in weblogic 7.0

    Hi,
    I'm calling a Local Ejb from a client application, but i'm getting the following exception
    Exceptionjavax.naming.NameNotFoundException: Unable to resolve 'local' Resolved:
    '' Unresolved:'local' ; remaining name 'local'
    I'm Using Weblogic 7.0
    But I have given the correct JNDI name in the deployment descriptor and whereever necessary
    If any one knows abt this, pls reply back, its urgent
    Thanks in advance
    Kiran

    Hi again,
    The exact exception is below,
    Exceptionjavax.naming.LinkException: [Root exception is javax.naming.NameNotFoundException: Invalid  name:app/ejb/kmml.jar#MMLDatavalidationEJB/local-home]; Link Remaining Name: 'java:app/ejb/kmml.jar#MMLDatavalidationEJB/local-home'
    thanks
    kiran

  • Using Local EJB obect in web container that installed in on the same Web AS

    we can use the local ejb object in the application that runs in same JVM.
    The Web Container and EJB Container run in the same JVM when Web AS installed as Minimum Cluster Installation(one cluster node).
    But, what happened if we install the Web AS as Large Cluster Installation? Can we still use the local ejb objects in the Web Container?
    Best regards,
    Raja
    Message was edited by: Raja Nasrallah

    Hi Raja,
    Yes you can. When you use local EJB objects there's no remote communication and the web container will find them in the EJB container of the local cluster node. For the application providers this is transparent - they shouldn't care about the configuration of the cluster.
    Best regards,
    Vladimir
    PS: Please consider <a href="https://www.sdn.sap.com/sdn/index.sdn?page=crp_help.htm#lostme">rewarding points</a> for helpful answers.

  • Does return value of Local EJB need to be serializable?

    Hi,
    I know It's a bit lazy of me not looking this up in the specs, but I'll give it a go anyway. Does the return value of a Local EJB need to be a serializable object? For my app it would be very convenient to return a org.w3c.dom.Document.
    Kind Regards,
    Rune Bj�rnstad.

    If you use LocalEJB, all params addresses are referencies, so you needn't use serializable interface.

  • Problems while performing lookup for Local EJBs

    Can anybody tell me how can i perform local ejb lookup in Sun app Server 8.0/8.1 ?
    I have following entries in ejb-jar.xml.
    <?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 >
    <enterprise-beans>
    <session >
    <ejb-name>TeamLeaderBean</ejb-name>
    <local-home>spring.ejb.example.TeamLeaderLocalHome
    </local- home>
    <local>spring.ejb.example.TeamLeaderLocal</local>
    <ejb-class>spring.ejb.example.TeamLeaderBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    <assembly-descriptor></assembly-descriptor>
    </ejb-jar>
    In sun-ejb-jar.xml I have
    <sun-ejb-jar>
    <enterprise-beans>
    <ejb>
    <ejb-name>TeamLeaderBean</ejb-name>
    <jndi-name>TeamLeaderBeanLocal</jndi-name>
    </ejb>
    </enterprise-beans>
    </sun-ejb-jar>
    In the client EJBs code I have used following ways of performing lookup...
    ctx.lookup("java:comp/env//TeamLeaderBeanLocal");
    ctx.lookup("java:comp/env/ejb/local/TeamLeaderBeanLocal");
    ctx.lookup("ejb/TeamLeaderBeanLocal");
    Unfortunately none of these performs a successful lookup...???
    Can anybody solve my problem?

    In order to look up a local EJB from an EJB client you have to add an <ejb-local-ref> element for client EJB. So:
    <session>
    <ejb-name>MyClientEJB</ejb-name>
    <ejb-local-ref>
    <ejb-ref-name>ejb/TeamLeaderBeanLocal</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <ejb-link>TeamLeaderBeanLocal</ejb-link>
    </ejb-local-ref>
    </session>
    fil
    Can anybody tell me how can i perform local ejb
    lookup in Sun app Server 8.0/8.1 ?
    I have following entries in ejb-jar.xml.
    <?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 >
    <enterprise-beans>
    <session >
    <ejb-name>TeamLeaderBean</ejb-name>
    <local-home>spring.ejb.example.TeamLeaderLocalHome
    </local- home>
    <local>spring.ejb.example.TeamLeaderLocal</local>
    <ejb-class>spring.ejb.example.TeamLeaderBean</ejb-clas
    s>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    <assembly-descriptor></assembly-descriptor>
    </ejb-jar>
    In sun-ejb-jar.xml I have
    <sun-ejb-jar>
    <enterprise-beans>
    <ejb>
    <ejb-name>TeamLeaderBean</ejb-name>
    <jndi-name>TeamLeaderBeanLocal</jndi-name>
    </ejb>
    </enterprise-beans>
    </sun-ejb-jar>
    In the client EJBs code I have used following ways of
    performing lookup...
    ctx.lookup("java:comp/env//TeamLeaderBeanLocal");
    ctx.lookup("java:comp/env/ejb/local/TeamLeaderBeanLoca
    l");
    ctx.lookup("ejb/TeamLeaderBeanLocal");
    Unfortunately none of these performs a successful
    lookup...???
    Can anybody solve my problem?

  • Web Services - Servlets vs EJBs

    Hi,
    Looking for any suggestions about the benefits of using either servlets or EJBs as web service endpoints. Very early in the design of any application, I wish to expose my business logic components as web services, is there any particular benefit to using a specific approach (i.e. using either EJBs or Servlets as the end points of the web services exposing the business logic)?
    This is a totally new application so I have no considerations towards reusing old EJB code, etc. My initial thoughts favour using servlets, if only because it reduces the complexity / resources required for the application server (i.e only Web-container required, rather than Web & EJB container).
    Any thoughts please?

    Why do Servlets not scale as well? Surely they are
    more "lightweight" than an EJB (which has all theRMI
    overhead), and wouldn't it ultimately be down tothe
    underlying app server anyway?Right, but servlets are just HTTP request listeners.
    They aren't components, they aren't transactional,
    they don't handle persistence, they don't have
    naming services, they don't have queuing services.
    The EJB container offers you a lot.
    With that said, it's not just a choice between
    servlets and EJBs. You can use POJOs and avoid EJBs
    altogether if you do it right.
    Or choose the best of both worlds and mix 'n match as needed.
    Noone forces you to choose one over the other (at least not for any technical reasons, I'm not diving into corporate politics here).
    My thought was that web services were a better wayto
    expose business logic than EJBs, but if there some
    solid reason why this isn't the case I like toknow.
    Web services - lightweight? Maybe that's true of
    REST, but certainly not SOAP. There's an argument
    that says services are more heavyweight than EJBs,
    because all the XML on the wire is an expensive
    protocol.
    SOAP is heavy on the network, but it's essentially a rather thin layer on top of other services (if properly architected).
    For example we have a SOAP layer exposing a Spring application which proxies an EJB architecture.
    Next to that SOAP layer sits a traditional web application (servlets) which itself has a Spring application sitting on top of it for demonstration and testing purposes.
    And then there's an SDK allowing direct access to the Spring layer (and thus almost direct access to the EJB layer).
    That's the beauty of a true open architecture, each component can be built on top of another and the component underneath can function just fine without it.
    Look into Spring:
    http://www.springframework.org
    It's a lighter alternative to EJBs, and good plumbing
    for any Java EE app.While Spring can serve as an alternative for EJB in places where EJB are overkill it's of course not in competition with it.
    Spring is a service layer, making use of other technologies (like EJB, like AOP, like ORM) to provide data and other services (like Struts, like JSF, like JSP) to provide that data to requesters.

  • Error in Workflow Services API acquireTask when using local EJB protocol

    Hi,
    I have a stateful EJB which calls the workflow services API acquireTask to acquire a task. The task was retrieved using a queryTask API call. However, the acquireTask API fails with an exception at TaskServiceLocalClient.java:1152, as listed below in the log, with no clear message as to why it had failed.
    The stateful EJB calls to workflow API using the local EJB protocol.
    The version of SOA suite running is 10.1.3.1 with Oracle XE 10.2.0.1 as its dehydration store on Windows XP Professional version 2002.
    Just wondering if anyone has encountered this problem or know what might have caused this.
    Exception trace is below:
    /09/2007 09:23:31 oracle.j2ee.rmi.RMIMessages EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
    WARNING: Exception returned by remote server: {0}
    au.com.unico.server.BPELException
    at oracle.bpel.services.workflow.task.client.TaskServiceLocalClient.acquireTask(TaskServiceLocalClient.java:1152)
    at au.com.unico.server.WorkflowBean.acquireTask(Unknown Source)
    at au.com.unico.server.WorkflowBean.fetchTask(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.SetContextActionInterceptor.invoke(SetContextActionInterceptor.java:44)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.TxRequiredInterceptor.invoke(TxRequiredInterceptor.java:50)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
    at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:119)
    at com.evermind.server.ejb.InvocationContextPool.invoke(InvocationContextPool.java:55)
    at com.evermind.server.ejb.StatefulSessionEJBObject.OC4J_invokeMethod(StatefulSessionEJBObject.java:844)
    at Workflow_RemoteProxy_2ooecl0.fetchTask(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.evermind.server.rmi.RmiMethodCall.run(RmiMethodCall.java:53)
    at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
    at java.lang.Thread.run(Thread.java:595)

    Hi Nicolas,
    It turned out I had the wrong version of "xml.jar" on the classpath. I have swapped the incorrect jar for a correct one and changed my code to use XMLUtil.createDocument(); and now everything runs smoothly.
    Thank you very much for your helpful advice.
    /emil

Maybe you are looking for