Client ejb 2.0 to a 1.0 sessionbean

For a migration situation i need to know whether it is possible for a ejb 2.0 client to connect to a 1.0 stateless sessionbean.
Is it necessary to do some extra programming or extra deployment measures?
regards,
Peterson

Hi ramp
im using entity beans - CMP.
the case scenario is, the software first design to be 1 db, 1 client, schema name is used when i create the ejb.
now management wanted to be 1 db, multiple client with different schema, example
global schema DBHOS will store the login user, and some common use table
HospitalA(client) will use db schema DBHosA
HospitalB(client) will use db schema DBHosB
both schema will share the exactly table and transaction will be store base on the login user belonging. UserA login to application will be storing the schema name and connection string that connect to DBHosA
now the problem is the Ejb that created is predefined in the XML while creating ejb
example
in orion-ejb-jar.xml stated as below
<entity-deployment name="Gnsicodeline" data-source="jdbc/FisicienDS" table="MMS.GNSICODELINE">
the `table=MMS.GNSICODELINE' , MMS was the schema and now i wanted it to be dynamically change base on the login user.
is there anyway to do that?
Million thanks in advance.

Similar Messages

  • Client EJB JNDI lookup broken in OC4J 9.0.2?

    I have a client program that connects to an EJB in the application server and invokes methods on it. If it look up the EJB using the actual JNDI binding, it works fine. If I look it up in java:comp/env (and use the ejb-ref in application-client.xml and ejb-ref-mapping in orion-application-client.xml) the client program catches the following exception:
    caught : javax.naming.NameNotFoundException: No object bound for java:comp/env/ejb/logging/Logger
    javax.naming.NameNotFoundException: No object bound for java:comp/env/ejb/logging/Logger
    at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:116)
    at javax.naming.InitialContext.lookup(InitialContext.java:347)
    at com.mycompany.common.logging.ejb.test.LoggerEJBTest.main(LoggerEJBTest.java:37)
    Now, assuming I don't have any typos (and I'd be thrilled if someone pointed it out if that were the case), then it looks like this is a bug in OC4J 9.0.2: the ejb-ref and ejb-ref-mapping elements do not work. For the record, I am using the same ejb-ref and ejb-ref-mapping elements for a servlet's web.xml and orion-web.xml, respectively, without problems.
    Here are relevant file excerpts:
    LoggerEJBTest.java:
    String hostName = "localhost";
    String hostPort = "23791";
    String userName = "abc";
    String password = "def";
    String providerURL = "ormi://" + hostName + ":" + hostPort + "/ghi";
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.ApplicationClientInitialContextFactory");
    env.put(Context.PROVIDER_URL, providerURL);
    env.put(Context.SECURITY_PRINCIPAL, userName);
    env.put(Context.SECURITY_CREDENTIALS, password);
    System.out.println("create initial context");
    Context context = new InitialContext(env);
    System.out.println("get home object");
    //works when uncommented
    //Object homeObject = context.lookup("logging/Logger");
    //broken:
    Object homeObject = context.lookup("java:comp/env/ejb/logging/Logger");
    ejb-jar.xml:
    <?xml version="1.0"?>
    <!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>abc</description>
    <display-name>abc</display-name>
    <enterprise-beans>
    <session>
    <description>Logger Bean</description>
    <display-name>Logger</display-name>
    <ejb-name>Logger</ejb-name>
    <home>com.mycompany.common.logging.ejb.LoggerHome</home>
    <remote>com.mycompany.common.logging.ejb.Logger</remote>
    <ejb-class>com.mycompany.common.logging.ejb.LoggerBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    </ejb-jar>
    orion-ejb-jar.xml:
    <?xml version="1.0"?>
    <!DOCTYPE orion-ejb-jar PUBLIC "-//Evermind//DTD Enterprise JavaBeans 2.0 runtime//EN" "http://xmlns.oracle.com/ias/dtds/orion-ejb-jar.dtd">
    <orion-ejb-jar>
         <enterprise-beans>
              <session-deployment name="Logger" location="logging/Logger">
         </enterprise-beans>
    </orion-ejb-jar>
    application-client.xml:
    <?xml version="1.0"?>
    <!DOCTYPE application-client PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.3//EN" "http://java.sun.com/dtd/application-client_1_3.dtd">
    <application-client>
         <display-name>logging test</display-name>
    <ejb-ref>
    <ejb-ref-name>ejb/logging/Logger</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>com.mycompany.common.logging.ejb.LoggerHome</home>
    <remote>com.mycompany.common.logging.ejb.Logger</remote>
    <ejb-link>Logger</ejb-link>
    </ejb-ref>
    </application-client>
    orion-application-client.xml:
    <?xml version="1.0"?>
    <!DOCTYPE orion-application-client PUBLIC "-//Evermind//DTD J2EE Application-client runtime 1.2//EN" "http://xmlns.oracle.com/ias/dtds/orion-application-client.dtd">
    <orion-application-client>
    <ejb-ref-mapping location="logging/Logger" name="ejb/logging/Logger" />
    </orion-application-client>

    As far as I know, the only way to lookup an EJB (deployed to
    OC4J) from a regular java class using the "ApplicationClientInitialContextFactory"
    class and the logical JNDI name is to include your regular java
    class (i.e. the client) in your application's EAR file (the file
    you use to deploy your application to OC4J).OK, but that sounds like a pretty silly constraint. Shouldn't the ApplicationClientInitialContextFactory know how to do the mapping using the application-client.xml and orion-application-client.xml settings? What does the OC4J server provide that makes this magically work?
    From the information you have supplied, it appears that you may
    not want to include your client (java) class in your EAR file.That is correct. It is an integration test program, not meant to be deployed into the application server.
    So now the question is, "Do you want to make your client part
    of your J2EE application, and include it in the application
    EAR file?"
    If you do, then you have made several mistakes which prevent
    you from doing that, but I don't want to explain further, since
    you may not want to do that, anyway!Not applicable. But on that topic, aside from being able to auto-start a client application within the OC4J JVM, are there any other reasons why I might want to deploy a client in that manner? I mean, honestly, these things are called "clients" and "servers" for a reason.
    Now if you have been reading other postings to this forum,
    and if you have read the documentation for OC4J, you would
    know that it requires J2SDK 1.3.1 only (not 1.4.0).I am well aware of the other postings on that topic. I am, however, counting on Oracle to live up to their promise to certify 1.4 with with the next update to OC4J:
    Limits of 10g
    That aside, I already consider OC4J 9.0.2 to be a broken product at this point anyway, so hacking it to use Java 1.4 doesn't bother me that much. OC4J 9.0.2 works about as well with Java 1.4 as with Java 1.3, assuming one replaces the tools.jar. The other major incompatibility is that Oracle SOAP breaks if a web service EJB home&remote interface is compiled with Java 1.4:
    http://forums.oracle.com/forums/message.jsp?id=936894
    Alas, we're using Apache SOAP 2.3 rather than the ass-backwards stuff in OC4J, anyways, so there's no problem.

  • Duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliver

    Hi all ,
    I am getting this error every time i try to make a new instance of BPEL process using java API .
    The error is thrown on when I do a post using "deliveryService.post("UserTaskSample", "4.0", "initiate", nm);"
    An exception has occured : java.lang.Exception: Failed to create "ejb/collaxa/system/DeliveryBean" bean; exception reported is: "javax.naming.NamingException: Lookup error: javax.naming.NamingException: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar [Root exception is oracle.classloader.util.AnnotatedLinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar ]; nested exception is: javax.naming.NamingException: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar [Root exception is oracle.classloader.util.AnnotatedLinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar ] [Root exception is javax.naming.NamingException: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar [Root exception is oracle.classloader.util.AnnotatedLinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar ]] at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:69) at javax.naming.InitialContext.lookup(InitialContext.java:351) at com.oracle.bpel.client.util.BeanRegistry.lookupDeliveryBean(BeanRegistry.java:279) at com.oracle.bpel.client.delivery.DeliveryService.getDeliveryBean(DeliveryService.java:299) at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:194) at com.oracle.bpel.client.delivery.DeliveryService.post(DeliveryService.java:178) at welcome.welcome.doPost(welcome.java:159) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595) Caused by: javax.naming.NamingException: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar [Root exception is oracle.classloader.util.AnnotatedLinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar ] at com.evermind.server.rmi.RMICall.throwRecordedException(RMICall.java:100) at com.evermind.server.rmi.RMIClientConnection.waitForJndiResponse(RMIClientConnection.java:425) at com.evermind.server.rmi.RMIClientConnection.lookup(RMIClientConnection.java:233) at com.evermind.server.rmi.RMIClient.lookup(RMIClient.java:302) at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:56) ... 18 more Caused by: oracle.classloader.util.AnnotatedLinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome Invalid class: com.oracle.bpel.client.ejb.interfaces.IDeliveryBeanHome Loader: orabpel.root:0.0.0 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/applications/orabpel/ejb_ob_engine.jar Configuration: in D:\product\10.1.3.1\OracleAS_1\j2ee\home\applications\orabpel Dependent class: oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache Loader: oc4j:10.1.3 Code-Source: /D:/product/10.1.3.1/OracleAS_1/j2ee/home/lib/oc4j-internal.jar Configuration: in META-INF/boot.xml in D:\product\10.1.3.1\OracleAS_1\j2ee\home\oc4j.jar at oracle.classloader.PolicyClassLoader.defineClass(PolicyClassLoader.java:2287) at oracle.classloader.PolicyClassLoader.findLocalClass(PolicyClassLoader.java:1462) at oracle.classloader.SearchPolicy$FindLocal.getClass(SearchPolicy.java:167) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.SearchPolicy.loadClass(SearchPolicy.java:645) at oracle.classloader.PolicyClassLoader.askParentForClass(PolicyClassLoader.java:1289) at oracle.classloader.SearchPolicy$AskParent.getClass(SearchPolicy.java:68) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.SearchPolicy.loadClass(SearchPolicy.java:645) at oracle.classloader.PolicyClassLoader.askParentForClass(PolicyClassLoader.java:1289) at oracle.classloader.SearchPolicy$AskParent.getClass(SearchPolicy.java:68) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.PolicyClassLoader.internalLoadClass(PolicyClassLoader.java:1674) at oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:1635) at java.lang.ClassLoader.loadClass(ClassLoader.java:299) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache.getNamedInterfaces(ClientRmiTypeCache.java:98) at oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache.getInterfaceType(ClientRmiTypeCache.java:85) at oracle.oc4j.rmi.ClientRmiTypeCache.getCachedType(ClientRmiTypeCache.java:33) at com.evermind.server.rmi.RMIClientConnection.getBoundObject(RMIClientConnection.java:1018) at com.evermind.server.rmi.RMIClientInputStream.resolveObject(RMIClientInputStream.java:26) at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java:1346) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) at com.evermind.server.rmi.RMIClientConnection.handleLookupResponse(RMIClientConnection.java:879) at com.evermind.server.rmi.RMIClientConnection.handleOrmiCommandResponse(RMIClientConnection.java:337) at com.evermind.server.rmi.RMIClientConnection.dispatchResponse(RMIClientConnection.java:296) at com.evermind.server.rmi.RMIClientConnection.processReceivedCommand(RMIClientConnection.java:278) at com.evermind.server.rmi.RMIConnection.handleCommand(RMIConnection.java:152) at com.evermind.server.rmi.RMIConnection.listenForOrmiCommands(RMIConnection.java:127) at com.evermind.server.rmi.RMIConnection.run(RMIConnection.java:107) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303) at java.lang.Thread.run(Thread.java:595) at com.evermind.server.rmi.RMICall.warningExceptionOriginatesFromTheRemoteServer(RMICall.java:109) at com.evermind.server.rmi.RMICall.throwRecordedException(RMICall.java:91) ... 22 more Caused by: java.lang.LinkageError: duplicate class definition: com/oracle/bpel/client/ejb/interfaces/IDeliveryBeanHome at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at oracle.classloader.PolicyClassLoader.defineClass(PolicyClassLoader.java:2241) at oracle.classloader.PolicyClassLoader.findLocalClass(PolicyClassLoader.java:1462) at oracle.classloader.SearchPolicy$FindLocal.getClass(SearchPolicy.java:167) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.SearchPolicy.loadClass(SearchPolicy.java:645) at oracle.classloader.PolicyClassLoader.askParentForClass(PolicyClassLoader.java:1289) at oracle.classloader.SearchPolicy$AskParent.getClass(SearchPolicy.java:68) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.SearchPolicy.loadClass(SearchPolicy.java:645) at oracle.classloader.PolicyClassLoader.askParentForClass(PolicyClassLoader.java:1289) at oracle.classloader.SearchPolicy$AskParent.getClass(SearchPolicy.java:68) at oracle.classloader.SearchSequence.getClass(SearchSequence.java:119) at oracle.classloader.PolicyClassLoader.internalLoadClass(PolicyClassLoader.java:1674) at oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:1635) at java.lang.ClassLoader.loadClass(ClassLoader.java:299) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache.getNamedInterfaces(ClientRmiTypeCache.java:98) at oracle.oc4j.rmi.ClientRmiTypeCache$InterfaceTypeCache.getInterfaceType(ClientRmiTypeCache.java:85) at oracle.oc4j.rmi.ClientRmiTypeCache.getCachedType(ClientRmiTypeCache.java:33) at com.evermind.server.rmi.RMIClientConnection.getBoundObject(RMIClientConnection.java:1018) at com.evermind.server.rmi.RMIClientInputStream.resolveObject(RMIClientInputStream.java:26) at java.io.ObjectInputStream.checkResolve(ObjectInputStream.java:1346) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339) at com.evermind.server.rmi.RMIClientConnection.handleLookupResponse(RMIClientConnection.java:879) at com.evermind.server.rmi.RMIClientConnection.handleOrmiCommandResponse(RMIClientConnection.java:337) at com.evermind.server.rmi.RMIClientConnection.dispatchResponse(RMIClientConnection.java:296) at com.evermind.server.rmi.RMIClientConnection.processReceivedCommand(RMIClientConnection.java:278) at com.evermind.server.rmi.RMIConnection.handleCommand(RMIConnection.java:152) at com.evermind.server.rmi.RMIConnection.listenForOrmiCommands(RMIConnection.java:127) at com.evermind.server.rmi.RMIConnection.run(RMIConnection.java:107) ... 2 more ".

    Hi,
    Thanks for the reply since I am quite new to BPEl can you elaborate a bit on this .
    What I did was
    1. I created a Async BPEL process in JDeveloper and in the same project I put my servlet code and html part when I deploy it on the server and ascess it the welcome jsp is displayed when I click submit on wecome.jsp it forwards to servlet and there the error originates .
    2 If instead I deploy the BPEl process seperately and the try to access the BPEL process using my JDeveloper java code I don't get any error it works fine.
    3 I have included config and schema folders in source path . wf_client_config.xml,user-properties.xml and wf-config.xml is also present in the source folder.
    4 Along with this the jars needed have been also added.
    So when I deploy the BPEL process created in 1 above from Jdeveloper it creates a .ear in j2ee\home\applications and the deploys it .This .ear doesn't has any .class files .
    I take bpelclasses.jar from the .jar which is created when I compile the project and put it in the j2ee\home\applib folder and made an entry for it in the server.xml file.After this it is able to get .class files.
    If there is any alternate way to do the same thing kindly tell me .
    Thanks
    Pranay

  • Error getting application exception message from client EJB 3

    Hi, somebody nkow what is the error?
    I have this simple session bean deploy in a jboss 4.0.5 GA application server
    My interface:
    package server.ejb.usuarios;
    import javax.ejb.Remote;
    @Remote
    public interface Prueba {
         public void getError() throws Exception;
    }My Session bean implementation:
    package server.ejb.usuarios;
    import javax.ejb.Stateless;
    import server.ejb.usuarios.Prueba;
    public @Stateless class PruebaBean implements Prueba {
         public void getError() throws Exception {
              throw new Exception("Mensaje de error");
    }Simple, i can deploy this bean on my application server, now i have this client code:
    package clientold;
    import java.util.Properties;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import server.ejb.usuarios.Prueba;
    public class MainPruebaError {
          * @param args
         public static void main(String[] args) {
              Context ctx;
              try {
                   ctx = getInitialContext();
                   Prueba pruebaSession = (Prueba) ctx.lookup("PruebaBean/remote");
                   pruebaSession.getError();
              } catch (NamingException e) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
              } catch(Exception e){
                   System.out.println("Get error from server: " + e.getMessage());
                   e.printStackTrace();
         private static Context getInitialContext() throws NamingException {
              Properties prop = new Properties();
              prop.setProperty("java.naming.factory.initial",
                        "org.jnp.interfaces.NamingContextFactory");
              prop.setProperty("java.naming.provider.url", "127.0.0.1:1099");
              prop.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
              return (new InitialContext(prop));
    }and my client catch the exception but i can�t get the correct exception message. I need pass custom message from my server to my clients and wrap it in a exception, but when i run this example got the next output:
    Get error from server: [Ljava.lang.StackTraceElement;
    java.lang.ClassNotFoundException: [Ljava.lang.StackTraceElement;
         at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50)
         at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139)
         at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
         at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
         at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1624)
         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
         at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
         at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
         at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
         at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
         at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:128)
         at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66)
         at org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:279)
         at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143)
         at org.jboss.remoting.Client.invoke(Client.java:525)
         at org.jboss.remoting.Client.invoke(Client.java:488)
         at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:41)
         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
         at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:46)
         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
         at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:40)
         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
         at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:77)
         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
         at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
         at $Proxy0.getError(Unknown Source)
         at clientold.MainPruebaError.main(MainPruebaError.java:21)What is the problem??, i must see on the output
    Get error from server: Mensaje de errorbut i have :
    Get error from server: [Ljava.lang.StackTraceElement;why???, is only a simple application exception and don,t work, somebody can help me??
    i have tried to use an interceptor class for get the exceptions and work, but without interceptor, dont work
    thanks

    I can resolve this problem change the JDK version used to develop my clint application and to run the jboss application server.
    Current, in JBoss 4.0.5, the JDK requirement is JDK 5, and i was using JDK 6.

  • Java client ejb access

    Hi
    Am I correct in thinking that if I require a browser based Java
    client to access an EJB that I have to perform the following ....
    SETUP for the browsers
    1) You need to remove the iiop10.jar file from the
    ...Netscape/Communicator/Program/Java/Classes directory. Renaming
    this
    file is not enough - you must remove it.
    2) You need to copy $ORACLE_HOME/lib/aurora_client.jar
    $ORACLE_HOME/lib/vbjorb.jar and $ORACLE_HOME/lib/vbjapp.jar into
    the
    ...Netscape/Communicator/Program/Java/Classes directory.
    aurora_client.jar is 2.3MB! This effectively means ejb's are
    totally useless in the real world if you want to access them from
    a browser over the internet.
    Somebody please tell me there's an alternative or even better
    it's not true.
    Thanks
    ritchie
    null

    Check the JNDI name specified in the xml file.
    Hope this will help
    Ashish Mangla

  • JSP client+EJB server

    I want to pass the data value from a jsp client (post method)and accept these values from a java server program.Java server program will accept these using getParameter .How this is achieved i am usingh weblogic as my server
    Thanks in advance

    Hi
    Even i have the same problem...
    i have deployed the ejb in jboss..
    but i cannot even run the core-java client program
    can u pls mail me the code...
    and the directory path
    thanks a lot
    cheers
    simreen

  • CORBA clients - EJBs in WLS

    This is the situation we have:
    1) We must support both C++ and Java clients that will be requesting
    services from our EJBs running in WLS. The clients are internal apps running
    in different companies and we would prefer to avoid requiring our clients to
    use an ORB by a specific vendor. At the same time we do not want to deal
    with potential problems related to the implementation differences by
    different ORB vendors. What would be the best way to handle this situation?
    2) WLS documentation has the following paragraph:
    "WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
    Currently, however, a standard for passing user identity -- required to
    implement EJB-to-CORBA mapping -- does not exist and the requirement for
    transaction propagation from the client is in question. While RMI over IIOP
    does allow CORBA clients to access EJBeans, the following services will not
    be available:
    EJB transaction services
    EJB security services"
    Does this mean that:
    2.1) CORBA client initiated transactions will not be supported,
    everything will work
    2.2) None of the EJB security services will be available in EJB method
    called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
    will fail)
    Thanks in advance

    Generally speaking, applications are built around common resources, namely the databases and security realms. Here, it seems you can't make any assumptions about the client at all, so you render useless the ability to propagate the transaction and security context; the upshot being that you couldn't
    use it, even if we provided support for it, which we don't.
    You also want to be shielded from all the incompatibilities between the ORB vendors, that is, you want to provide a client interface to call into an ejb, that will work irrespective of the orb the client runs. From this, I gather that you can have a 1.0 or 2.1 Tao, Visibroker, IONA, etc, orb as a
    client, so you can not use objects in the interface.
    To accomplish this, you need to do the following:
    -- design the client interface so that it is stateless
    -- design the interface so that it does not include any objects or structs... actually, you can use structs, it's just more complicated.
    -- use server side transactions only (this follows from the statelessness of the interface)
    -- either assume that ssl will be in place by the time you need it or include a token in the interface for the authenticated user
    Please, read on...
    "<=one way=>" wrote:
    This is the situation we have:
    1) We must support both C++ and Java clients that will be requesting
    services from our EJBs running in WLS. The clients are internal apps running
    in different companies and we would prefer to avoid requiring our clients to
    use an ORB by a specific vendor. At the same time we do not want to deal
    with potential problems related to the implementation differences by
    different ORB vendors. What would be the best way to handle this situation?
    We support IIOP as the transport. To call into any remote interface, you must provide a java.rmi.Remote interface, and code generate the IDL from that interface using weblogic.rmic. If you follow the above strictures, and use the -noValueTypes discussed earlier, you should be able to make progress
    without the promised examples.... or you can wait for the examples.
    >
    2) WLS documentation has the following paragraph:
    "WebLogic RMI over IIOP is the framework for EJB-to-CORBA mapping support.
    Currently, however, a standard for passing user identity -- required to
    implement EJB-to-CORBA mapping -- does not exist and the requirement for
    transaction propagation from the client is in question. While RMI over IIOP
    does allow CORBA clients to access EJBeans, the following services will not
    be available:
    EJB transaction services
    EJB security services"
    Does this mean that:
    2.1) CORBA client initiated transactions will not be supported,
    everything else (sic) will workYes.
    >
    2.2) None of the EJB security services will be available in EJB method
    called by a CORBA client (i.e. getCallerPrincipal() and isCallerInRole()
    will fail)No. The call will not fail, they will either provide values that correspond to the default or the user configured by the weblogic.iiop.user property.
    >
    >
    Thanks in advance

  • [Jeveloper + EJB client - EJB on OAS] Problem connecting

    I having problems getting a simple client from within JDeveloper 3.0(Code snippet - OAS/EJB Client) talking to a simple EJB on OAS 4.0.8.
    I have deployed OK (red flag against status?) but when I run the client using port - 5512(ORB port)I get the message below
    Anybody any ideas?
    Creating an initial context
    Looking for the EJB published as 'MyOASApp/MyEJB'
    Naming exception occurred!
    Cause: This may be an unknown URL, or some classes required by the EJB are missing from your classpath, or your OAS host is short of resources
    Suggestion: Check the components of the URL, and make sure your project includes a library containing the EJB .jar files generated by the deployment utility.
    [Root exception is java.net.UnknownServiceException: no content-type]javax.naming.NamingException: Failure to access http://hfxcap4:5512/ows-bin/rmproxy.ior; listener inaccessible or configured wrongly
    at oracle.oas.jndi.oas.SiteResolver.getIOR(Compiled Code)
    at oracle.oas.jndi.oas.SiteResolver.resolveListenerURL(Compiled Code)
    at oracle.oas.jndi.oas.SiteResolver.resolveSiteContact(Compiled Code)
    at oracle.oas.jndi.oas.SiteResolver.resolveSiteContact(Compiled Code)
    at oracle.oas.jndi.oas.SiteResolver.resolveSiteObject(Compiled Code)
    at oracle.oas.jndi.oas.BeanInitialContext.resolve(Compiled Code)
    at oracle.oas.jndi.oas.BeanContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.BeanInitialContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.WrapperContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.BeanContext.lookup(Compiled Code)
    at javax.naming.InitialContext.lookup(Compiled Code)
    at package1.MyOASAppClient.main(Compiled Code)
    **************

    HI, I have the same problem that you had, maybe did you manage through ?? Thanks for all the help you could bring me.
    Nico
    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by pFrooney:
    Back Again ...
    I have tried all ao the above
    now using this code below but it fails on the lookup with the error message below:
    ..created library with client stub, using 1.1.8, moved OASRuntime to top of included libraries
    Any suggestions
    String oasUrl = "oas://hfxcap4:80";
    String oasEJB = "MyOASApp/MyEJB" ;
    // Setup the environment
    Hashtable environment = new Hashtable();
    // Turn JNDI on to OAS
    environment.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "oracle.oas.naming.jndi.RemoteInitCtxFactory");
    // Lookup the URL
    conv_package.MyEJBHome homeInterface = null;
    try {
    System.out.println("Creating an initial context");
    // Get initial JNDI context
    Context site = (Context) ((new InitialContext(environment)).lookup(oasUrl));
    org.omg.CORBA.COMM_FAILURE:
    at oracle.oas.orb.CORBA.Request._invoke(Compiled Code)
    at oracle.oas.orb.CORBA.Delegate._invoke(Compiled Code)
    at org.omg.CORBA.portable.ObjectImpl._invoke(Compiled Code)
    at oracle.oas.orb.CORBA.Delegate.is_a(Compiled Code)
    at org.omg.CORBA.portable.ObjectImpl._is_a(Compiled Code)
    at oracle.oas.jndi.oas.BeanInitialContext.resolve(Compiled Code)
    at oracle.oas.jndi.oas.BeanContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.BeanInitialContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.WrapperContext.lookup(Compiled Code)
    at oracle.oas.jndi.oas.BeanContext.lookup(Compiled Code)
    at javax.naming.InitialContext.lookup(Compiled Code)
    at CClient_package.MyOASAppClient.main(Compiled Code)<HR></BLOCKQUOTE>
    null

  • Client EJB-AM ri-methods to synchronize

    Hello,
    I'm doing migration of JClient application from JDev902rc/OC4J 1.0.2 to JDev9032/OC4J 9.0.3. Business components are deployed as stateful Session EJBs.
    Client application is written as multi-threaded, so calls to the same business component (AM) might appear concurrent. Especially this relates to the common-use AM which client methods act as proxies to stored procedures.
    During runtime, if such situation occurs, OC4J throws:
    com.evermind.server.rmi.OrionRemoteException: Second thread call to stateful session bean.
    Methods in generated client proxy AMClient.java can be easily synchronized. But what about other EJBApplicationModuleImpl-class ri-methods which can be called in parallel also ? Old version didn't have the problem, possibly due to another logic in oc4j.
    My question to JDev team:
    Is there any reason not to synchronize all ri-methods in EJBApplicationModuleImpl-class if OC4J doesn't allow second call to the SSB anyway ?
    Or maybe this behavior can be parameterized somehow ?
    Thanks
    Arkady

    I seem to be having a similar difficulty. I was able to sync Outlook with the Touch once but since then I have not been able to sync new infor from Outlook to Touch. I've tried several hints from this board and one other and Googled for a hint but nothing seems to work.
    I am using iTunes 7 but have not yet updated the Touch to 2.0.
    Any ideas outh there?
    Mike

  • Creating multiple stateful session beans from a java client. (EJB 3.0)

    I'm having difficulties with the following:
    To access the ShoppingCartBean, I have to put the following annotation in my standalone java client:
    @EJB
    private static ShoppingCartRemote shoppingCartBean;
    The static must be there, thus only one ShoppingCartBean will exist within my java client. But as the ShoppingCartBean is a stateful session bean, I want to be able to get different beans of the same type.
    What is the correct way to do this in EJB 3.0?

    Great question. Because Home interfaces have been removed for the EJB 3.0 simplified
    API, stateful session bean creation happens as a side-effect of injection. However, the
    same is true of EJB 3.0 business interface lookups. The easiest way to create additional
    stateful session beans is to lookup the same dependency that was declared via your
    @EJB annotation.
    E.g.,
    // Assuming the declaring class is pkg1.ShoppingCartClient.java
    InitialContext ic = new InitialContext();
    ShoppingCartRemote scr1 = (ShoppingCartRemote)
    ic.lookup("java:comp/env/pkg1.ShoppingCartClient/shoppingCartBean");
    Note that the name relative to java:comp/env is the default associated with your
    @EJB annotation since the name() attribute wasn't used. Alternatively, you
    could have used :
    @EJB(name="scb") private static ShoppingCartRemote shoppingCartBean;
    InitialContext ic = new InitialContext();
    ShoppingCartRemote scr1 = (ShoppingCartRemote) ic.lookup("java:comp/env/scb");
    Yet another alternative is to declare the @EJB at the class-level. This just defines
    the dependency without any injection, which is fine if you want to create a bunch of
    them via lookup anyway.
    @EJB(name="scb", beanInterface=ShoppingCartRemote.class)
    public class .... {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • EJB Client Access From JDeveloper9iR2

    I seem to be running into a lot of problems when trying to get a simple EJB client to talk to an EJB on our 9IAS platform. I have developed a simple session bean (just to test) which simply returns a string. When I create the default client code this works fine using the embedded OC4J server in Jdeveloper but I can't run a similar client against 9IAS when I deploy the code. When I go through the client wizard it seems to produce the same code as the standalone EJB OC4J client. I simply changed the name of the server (Context.PROVIDER_URL, "ormi://pe2500/). This is the parameter code I use:
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, "admin");
    env.put(Context.SECURITY_CREDENTIALS, "welcome");
    env.put(Context.PROVIDER_URL, "ormi://pe2500:23891/MyEJBs");
    This is the output I receive:
    D:\jdeveloper9ir2\jdk\bin\javaw.exe -ojvm -classpath D:\javadev\ejbservlet\ejbservlet\WEB-INF\classes;D:\jdeveloper9ir2\jdev\lib\jdev-rt.jar;D:\jdeveloper9ir2\j2ee\home\lib\ojsp.jar;D:\jdeveloper9ir2\j2ee\home\jsp\lib\taglib\ojsputil.jar;D:\jdeveloper9ir2\j2ee\home\oc4j.jar;D:\jdeveloper9ir2\j2ee\home\lib\servlet.jar;D:\jdeveloper9ir2\jdev\lib\ojc.jar;D:\jdeveloper9ir2\j2ee\home\lib\activation.jar;D:\jdeveloper9ir2\j2ee\home\lib\ejb.jar;D:\jdeveloper9ir2\j2ee\home\lib\jaas.jar;D:\jdeveloper9ir2\j2ee\home\lib\jaxp.jar;D:\jdeveloper9ir2\j2ee\home\lib\jcert.jar;D:\jdeveloper9ir2\j2ee\home\lib\jdbc.jar;D:\jdeveloper9ir2\j2ee\home\lib\jms.jar;D:\jdeveloper9ir2\j2ee\home\lib\jndi.jar;D:\jdeveloper9ir2\j2ee\home\lib\jnet.jar;D:\jdeveloper9ir2\j2ee\home\lib\jsse.jar;D:\jdeveloper9ir2\j2ee\home\lib\jta.jar;D:\jdeveloper9ir2\j2ee\home\lib\mail.jar;D:\jdeveloper9ir2\j2ee\home\oc4j.jar;D:\jdeveloper9ir2\lib\xmlparserv2.jar;D:\jdeveloper9ir2\lib\xmlcomp.jar;D:\jdeveloper9ir2\j2ee\home\oc4j.jar;D:\jdeveloper9ir2\j2ee\home\lib\servlet.jar Samplemypackage6.ctejb1Client3
    javax.naming.NamingException: Lookup error: java.net.ConnectException: Connection refused: connect; nested exception is:
         java.net.ConnectException: Connection refused: connect
         java.lang.Object com.evermind.server.rmi.RMIContext.lookup(java.lang.String)
              RMIContext.java:134
         java.lang.Object javax.naming.InitialContext.lookup(java.lang.String)
              InitialContext.java:350
         void Samplemypackage6.ctejb1Client3.main(java.lang.String[])
              ctejb1Client3.java:18
    Process exited with exit code 0.
    Can anyone tell me if this is the correct communication method for client EJB's talking to the 9IAS server?
    Any help really appreciated.
    Chris Taylor

    hi Chris Taylor, did you find the solution for this error. i too get this error and i am looking for the answer. if you find any answer please share with me too. if i get any answer for this i will reply you too.

  • Unable to call exported client methods of EJB session bean remote interface

    I am unable to call client methods of a BC4J application module deployed as a Session EJB to Oracle 8i at the client side of my multi-tier application. There is no documentation, and I am unable to understand how I should do it.
    A business components project has been created. For instance, its application module is called BestdataModule. A few custom methods have been added to BestdataModuleImpl.java file, for instance:
    public void doNothingNoArgs() {
    public void doNothingOneArg(String astr) {
    public void setCertificate(String userName, String userPassword) {
    theCertificate = new Certificate(userName, userPassword);
    public String getPermission() {
    if (theCertificate != null)
    {if (theCertificate.getPermission())
    {return("Yes");
    else return("No, expired");
    else return("No, absent");
    theCertificate being a protected class variable and Certificate being a class, etc.
    The application module has been tested in the local mode, made remotable to be deployed as EJB session bean, methods to appear at the client side have been selected. The application module has been successfully deployed to Oracle 8.1.7 and tested in the remote mode. A custom library containing BestdataModuleEJBClient.jar and BestDataCommonEJB.jar has been created.
    Then I try to create a client basing on Example Oracle8i/EJB Client snippet:
    package bestclients;
    import java.lang.*;
    import java.sql.*;
    import java.util.*;
    import javax.naming.*;
    import oracle.aurora.jndi.sess_iiop.*;
    import oracle.jbo.*;
    import oracle.jbo.client.remote.ejb.*;
    import oracle.jbo.common.remote.*;
    import oracle.jbo.common.remote.ejb.*;
    import oracle.jdeveloper.html.*;
    import bestdata.client.ejb.*;
    import bestdata.common.ejb.*;
    import bestdata.common.*;
    import bestdata.client.ejb.BestdataModuleEJBClient;
    public class BestClients extends Object {
    static Hashtable env = new Hashtable(10);
    public static void main(String[] args) {
    String ejbUrl = "sess_iiop://localhost:2481:ORCL/test/TESTER/ejb/bestdata.BestdataModule";
    String username = "TESTER";
    String password = "TESTER";
    Hashtable environment = new Hashtable();
    environment.put(javax.naming.Context.URL_PKG_PREFIXES, "oracle.aurora.jndi");
    environment.put(Context.SECURITY_PRINCIPAL, username);
    environment.put(Context.SECURITY_CREDENTIALS, password);
    environment.put(Context.SECURITY_AUTHENTICATION, ServiceCtx.NON_SSL_LOGIN);
    BestdataModuleHome homeInterface = null;
    try {
    Context ic = new InitialContext(environment);
    homeInterface = (BestdataModuleHome)ic.lookup(ejbUrl);
    catch (ActivationException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
    System.exit(1);
    catch (CommunicationException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
    System.exit(1);
    catch (NamingException e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
    System.exit(1);
    try {
    System.out.println("Creating a new EJB instance");
    RemoteBestdataModule remoteInterface = homeInterface.create();
    // Method calls go here!
    // e.g.
    // System.out.println(remoteInterface.foo());
    catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
    It doesnt cause any errors. However, how must I call methods? The public interface RemoteBestdataModule has no such methods:
    void doNothingNoArgs();
    void doNothingOneArg(java.lang.String astr);
    void setCertificate(java.lang.String userName, java.lang.String userPassword);
    java.lang.String getPermission();
    Instead of that it has the following methods:
    oracle.jbo.common.remote.PiggybackReturn doNothingNoArgs(byte[] _pb) throws oracle.jbo.common.remote.ejb.RemoteJboException, java.rmi.RemoteException;
    oracle.jbo.common.remote.PiggybackReturn doNothingOneArg(byte[] _pb, java.lang.String astr) throws oracle.jbo.common.remote.ejb.RemoteJboException, java.rmi.RemoteException;
    oracle.jbo.common.remote.PiggybackReturn customQueryExec(byte[] _pb, java.lang.String aQuery) throws oracle.jbo.common.remote.ejb.RemoteJboException, java.rmi.RemoteException;
    oracle.jbo.common.remote.PiggybackReturn setCertificate(byte[] _pb, java.lang.String userName, java.lang.String userPassword) throws oracle.jbo.common.remote.ejb.RemoteJboException, java.rmi.RemoteException;
    oracle.jbo.common.remote.PiggybackReturn getPermission(byte[] _pb) throws oracle.jbo.common.remote.ejb.RemoteJboException, java.rmi.RemoteException;
    I cannot call those methods. I can see how they are called in BestdataModuleEJBClient.java file:
    public void doNothingNoArgs() throws oracle.jbo.JboException {
    try {
    oracle.jbo.common.remote.PiggybackReturn _pbRet = mRemoteAM.doNothingNoArgs(getPiggyback());
    processPiggyback(_pbRet.mPiggyback);
    if (_pbRet.isReturnStreamValid()) {
    return;
    catch (oracle.jbo.common.remote.ejb.RemoteJboException ex) {
    processRemoteJboException(ex);
    catch (java.rmi.RemoteException ex) {
    processRemoteJboException(ex);
    throw new oracle.jbo.JboException("Marshall error");
    However, I cannot call getPiggyback() function! It is a protected method, it is available to the class BestdataModuleEJBClient which extends EJBApplicationModuleImpl, but it is unavailable to my class BestClients which extends Object and is intended to extend oracle.jdeveloper.html.WebBeanImpl!
    It seems to me that I mustnt use RemoteBestdataModule interface directly. Instead of that I must use the public class BestdataModuleEJBClient that extends EJBApplicationModuleImpl and implements BestdataModule interface. It contains all methods required without additional arguments (see just above). However, how must I create an object of BestdataModuleEJBClient class? That is a puzzle. Besides my custom methods the class has only two methods:
    protected bestdata.common.ejb.RemoteBestdataModule mRemoteAM;
    /*This is the default constructor (do not remove)*/
    public BestdataModuleEJBClient(RemoteApplicationModule remoteAM) {
    super(remoteAM);
    mRemoteAM = (bestdata.common.ejb.RemoteBestdataModule)remoteAM;
    public bestdata.common.ejb.RemoteBestdataModule getRemoteBestdataModule() {
    return mRemoteAM;
    It looks like the remote application module must already exist! In despair I tried to put down something of the kind at the client side:
    RemoteBestdataModule remoteInterface = homeInterface.create();
    BestdataModuleEJBClient dm = new BestdataModuleEJBClient(remoteInterface);
    dm.doNothingNoArgs();
    Of course, it results in an error.
    System Output: null
    System Error: java.lang.NullPointerException
    System Error: oracle.jbo.common.PiggybackOutput oracle.jbo.client.remote.ApplicationModuleImpl.getPiggyForRemovedObjects(oracle.jbo.common.PiggybackOutput) (ApplicationModuleImpl.java:3017)
    System Error: byte[] oracle.jbo.client.remote.ApplicationModuleImpl.getPiggyfront(boolea
    System Error: n) (ApplicationModuleImpl.java:3059)
    System Error: byte[] oracle.jbo.client.remote.ApplicationModuleImpl.getPiggyback() (ApplicationModuleImpl.java:3195)
    System Error: void bestdata.client.ejb.BestdataModuleEJBClient.doNothingNoArgs() (BestdataModuleEJBClient.java:33)
    System Error: void bes
    System Error: tclients.BestClients.main(java.lang.String[]) (BestClients.java:76)
    I have studied a lot of documents in vain. I have found only various senseless discourses:
    "Use the Application Module Wizard to make the Application Module remotable and export the method. This will generate an interface for HrAppmodule (HrAppmodule.java in the Common package) which contains the signature for the exported method promoteAllEmps(). Then, deploy the Application Module. Once the Application Module has been deployed, you can use the promoteAllEmps() method in your client-side programs. Calls to the promoteAllEmps() method in client-side programs will result in calls to the promote() method in the application tier."
    However, I have failed to find a single line of code explaining how it should be called.
    Can anybody help me?
    Best regards,
    Svyatoslav Konovaltsev,
    [email protected]
    null

    Dear Steven,
    1. Thank you very much. It seems to me that the problem is solved.
    2. "I logged into Metalink but it wants me to put in both a tar number and a country name to see your issue." It was the United Kingdom, neither the US nor Russia if you mean my issue.
    I reproduce the text to be written by everyone who encounters the same problem:
    package bestclients;
    import java.util.Hashtable;
    import javax.naming.*;
    import oracle.jbo.*;
    public class BestdataHelper {
    public static ApplicationModule createEJB()
    throws ApplicationModuleCreateException {
    ApplicationModule applicationModule = null;
    try {
    Hashtable environment = new Hashtable(8);
    environment.put(Context.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
    environment.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_EJB);
    environment.put(Context.SECURITY_PRINCIPAL, "TESTER");
    environment.put(Context.SECURITY_CREDENTIALS, "TESTER");
    environment.put(JboContext.HOST_NAME, "localhost");
    environment.put(JboContext.CONNECTION_PORT, new Integer("2481"));
    environment.put(JboContext.ORACLE_SID, "ORCL");
    environment.put(JboContext.APPLICATION_PATH, "/test/TESTER/ejb");
    Context ic = new InitialContext(environment);
    ApplicationModuleHome home = (ApplicationModuleHome)ic.lookup("bestdata.BestdataModule");
    applicationModule = home.create();
    applicationModule.getTransaction().connect("jdbc:oracle:kprb:@");
    applicationModule.setSyncMode(ApplicationModule.SYNC_IMMEDIATE);
    catch (NamingException namingException) {
    throw new ApplicationModuleCreateException(namingException);
    return applicationModule;
    package bestclients;
    import bestdata.common.*;
    import certificate.*;
    public class BestClients extends Object {
    public static void main(String[] args) {
    BestdataModule bestdataModule = (BestdataModule)BestdataHelper.createEJB();
    Certificate aCertificate = new Certificate("TESTER", "TESTER");
    //calling a custom method!!
    bestdataModule.passCertificate(aCertificate);
    Thank you very much,
    Best regards,
    Svyatoslav Konovaltsev.
    [email protected]
    null

  • Applicate Remote EJB Client

    Hello,
    I am getting to know EJB and have started with it from a Pocket Book and has started to implement and example suggested by this website: http://www.laliluna.de/articles/ejb-3-tutorial-jboss.html.
    Coming to the client part, maybe incorrectly by my part or particular to the cited website's example, I see a strong coupling on the EJB client to the Remote Interface and the actual SessionBean which I could only see sufficed by having the client on the same "project" of the EJB. Therefore I ask you, is there a way to have the EJB client on a different project, even on a different app. server than the Session Bean?
    Thank you for your help,
    TS

    the only thing you need in the client is the remote interface.
    So to share this interface between a client and a server application, you could put those interfaces in a separate library jar and share that between the two projects.

  • GlassFish v3, EJB 3.1 and Standalone Client

    hi team.
    I'm very glad releasing javaee 6.
    I download netbeans 6.8 with GlassFish v3 and try to write simple ejb 3.1 application.
    ejb module deployed successfully without any problem, after this I've created new simple java application and try to call ejb 3.1 session bean.
    but no success.
    can anybody show me sample code how to call ejb 3.1 from standalone client ??
    I was working with ejb 3.0 and jboss. I had not any problem from standalone client.
    ejb 3.0 standalone client for jboss:
    Properties env = new Properties();
    env.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    env.setProperty("java.naming.provider.url", "localhost:1099");
    env.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
    InitialContext ctx = new InitialContext(env);
    SomeSessionInt sBean = (SomeSessionInt)ctx.lookup("SomeSessionBean/remote");can anybody tell me which client jars are required for client application and what is the environment properties should i set ?
    PS.
    Also i tried to make enterprise application with ejb and web module into netbeans. but there wasn't any problem to inject ejb session bean from jsf managed bean. problem is how to lookup ejb from standalone client.
    any ideas will be appreciated.
    Regards,
    Paata Lominadze.

    also i can post my full example with error stacktrace.
    1.session bean (interface not required , as we know from spec.)
    public class MySessBean {
        public String sayHello(String name) throws Exception {
            System.out.println("Method initialized.");
            return "Hello : " + name;
    }2.Standalone java client
    public class Main {
        public static void main(String[] args) {
            try {
                Properties jndiProps = new Properties();
                jndiProps.put("java.naming.factory.initial", "com.sun.enterprise.naming.impl.SerialInitContextFactory");
                jndiProps.put("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
                jndiProps.put("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
                jndiProps.setProperty("org.omg.CORBA.ORBInitialHost", "127.0.0.1");
                jndiProps.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
                Context ctx = new InitialContext(jndiProps);
                System.out.println(ctx.lookup("java:global/MyEJBModule/MySessionBean"));
                MySessionBean mySessionBean = (MySessionBean)ctx.lookup("java:global/MyEJBModule/MySessionBean");
                mySessionBean.sayHello("Paata");
            } catch (Exception e) {
                e.printStackTrace();
    }3. error stacktrace on server side:
    WARNING: "IOP00100006: (BAD_PARAM) Class com.magti.billing.ejb.__EJB31_Generated__MySessionBean__Intf____Bean__ is not Serializable"
    org.omg.CORBA.BAD_PARAM:   vmcid: OMG  minor code: 6 completed: Maybe
            at com.sun.corba.ee.impl.logging.OMGSystemException.notSerializable(OMGSystemException.java:990)4.client side error stacktrace:
    Dec 14, 2009 9:15:13 AM com.sun.enterprise.transaction.JavaEETransactionManagerSimplified initDelegates
    INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
    Dec 14, 2009 9:15:18 AM com.sun.enterprise.naming.impl.SerialContext lookup
    SEVERE: enterprise_naming.serialctx_communication_exception
    Dec 14, 2009 9:15:18 AM com.sun.enterprise.naming.impl.SerialContext lookup
    SEVERE:
    java.rmi.MarshalException: CORBA BAD_PARAM 1330446342 Maybe; nested exception is:
            java.io.NotSerializableException: ----------BEGIN server-side stack trace----------
    org.omg.CORBA.BAD_PARAM:   vmcid: OMG  minor code: 6 completed: Maybe
            at com.sun.corba.ee.impl.logging.OMGSystemException.notSerializable(OMGSystemException.java:990)
            at com.sun.corba.ee.impl.logging.OMGSystemException.notSerializable(OMGSystemException.java:1005)
            at com.sun.corba.ee.impl.orbutil.ORBUtility.throwNotSerializableForCorba(ORBUtility.java:753)
            at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.writeAny(Util.java:370)_____________________________
    Regards,
    Paata Lominadze.

  • Client calling EJB + No object bound eror

    Hi,
    I am a newbie to oc4j. I have tried to get a client to call a stateless ejb using a bat file outside the server, with no luck. I get NamingException: No object bound for java:comp/env/EmployeeBean when doing a jndi lookup. I have read the doc's, tried the answers in the forum and I even used the example code provided from oracle, but I still get the same error message every time.
    Has anyone come across this issue when calling an ejb from a client??
    Any help would be greatly appreciated. It’s driving me crazy.
    Thanks
    David

    Hi,
    I will check out the link, thank you. I am a newbie to java and oracle, so any help would be great. i wasnt sure which bits of code would be really helpfull, so i just put most of it in, sorry if it is too much info.
    i am using oracle9ias release 1.0.2.2a (i dont know if this would make any difference). I deploy all my ears using the enterprise manager. The client-jar is within the ear. i use a bat to run the Client code.
    I can get a servlet to call the same ejbs and that works fine.
    #batfile
    ========
    i set the classpath which including refernces to oc4j.jar and oc4jclient.jar and my ejb-jar
    and then i use
    set BigD=-Dorg.omg.CORBA.ORBInitialHost=localhost -Duser.timezone=ECT
    java.exe %BigD% -classpath "%classpath%" com.test.client.Client
    //Client Code
    =============
    public class Client {
         public static void main(String[] args) {
              System.out.println("Client started again...");
              try {
                   Context context = new InitialContext();
                   System.out.println("got context");
                   Object homeObject = context.lookup("java:comp/env/ejb/ConsumerRequestSession");
                   ConsumerRequestSessionHome home = (ConsumerRequestSessionHome) PortableRemoteObject.narrow(homeObject, ConsumerRequestSessionHome.class);
                   System.out.println("got home");
                   ConsumerRequestSession remote = (ConsumerRequestSession) PortableRemoteObject.narrow(home.create(), ConsumerRequestSession.class);
                   System.out.println("got remote");
                   String retValue = remote.getString();
                   System.out.println("The retValue from client is : " + retValue);
              }catch(Exception e) {
                   e.printStackTrace();
                   System.out.println("ERROR in try block of client when creating jndi :" + e.getMessage());
    #jndi
    ====
    java.naming.factory.initial=com.evermind.server.ApplicationClientInitialContextFactory
    java.naming.provider.url=ormi://localhost/test
    java.naming.security.principal=admin     
    java.naming.security.credentials=welcome
    #application-client.xml
    =======================
    <application-client>
    <display-name>ejb/ConsumerRequestSession</display-name>
         <ejb-ref>
              <ejb-ref-name>ejb/ConsumerRequestSession</ejb-ref-name>
              <ejb-ref-type>Session</ejb-ref-type>
              <home>com.test.ejb.ConsumerRequestSessionHome</home>
              <remote>com.test.ejb.ConsumerRequestSession</remote>
         </ejb-ref>
    <!--          <display-name>EmployeeBean</display-name>
         <ejb-ref>
              <ejb-ref-name>EmployeeBean</ejb-ref-name>
              <ejb-ref-type>Session</ejb-ref-type>
              <home>employee.EmployeeHome</home>
              <remote>employee.Employee</remote>
         </ejb-ref>
         -->
    </application-client>
    #orion-application-client.xml
    =============================
    <orion-application-client>
         <ejb-ref-mapping location="com/test/ejb/ConsumerRequestSession" name="ejb/ConsumerRequestSession"/>
         <!--<ejb-ref-mapping name="EmployeeBean" location="employee/EmployeeBean" />
              <ejb-ref-mapping name="EmployeeBean" location="employee/EmployeeBean" />-->
    </orion-application-client>
    #ejb-jar.xml
    <ejb-jar>
         <enterprise-beans>
              <session>
                   <ejb-name>ejb/ConsumerRequestSession</ejb-name>
                   <home>com.test.ejb.ConsumerRequestSessionHome</home>
                   <remote>com.test.ejb.ConsumerRequestSession</remote>
                   <ejb-class>com.test.ejb.ConsumerRequestSessionEJB</ejb-class>
                   <session-type>Stateless</session-type>
                   <transaction-type>Container</transaction-type>
              </session>
         </enterprise-beans>
         <assembly-descriptor>
              <container-transaction>
                   <method>
                        <ejb-name>ejb/ConsumerRequestSession</ejb-name>
                        <method-name>*</method-name>
                   </method>
                   <trans-attribute>Required</trans-attribute>
              </container-transaction>
         </assembly-descriptor>
    </ejb-jar>
    #orion-ejb-jar.xml
    ==================
    <orion-ejb-jar>
         <enterprise-beans>
              <session-deployment location="com/test/ejb/ConsumerRequestSession" name="ejb/ConsumerRequestSession"/>
         </enterprise-beans>
         <assembly-descriptor>
              <default-method-access>
                   <security-role-mapping name="<default-ejb-caller-role>" impliesAll="true"/>
              </default-method-access>
         </assembly-descriptor>     
    </orion-ejb-jar>
    thank you for your help
    david.

Maybe you are looking for