Proxying EJB Container Request

Hi,
As part of our application we have an Applet that requires communication
with EJB Container objects (Session beans, Message-driven beans ). Rather
than executing RMI calls directly to the WLS Cluster we would like to proxy
these requests through our web-server (IIS 5.0). I was wondering if
there's a way for us to do this (route the EJB Container requests through
the IIS webserver) without having to write Proxy Servlets?
Any help would be appreciated!
Regards,
OA

EnterTheDragon wrote:
it is said *'EJB container maintains an instance pool.'*
Is it a pool of Session beans ? is it a pool of Entity beans ?
Can anybody please elaborate at this part what pool they talk about ?The part of the pool that holds things, would be the part that holds instances.

Similar Messages

  • Security & Servlet engine and ejb container on different servers

              When you have the servlet container and the ejb container on different physical servers,
              how is the rmi connection meant to to be done while still maintaining the seucrity
              propagation from servlet to ejb tier?
              Assume that my user is already authenticated (forms) on the servlet tier. Do we then
              create a dedicated connection (InitialContext + url/username/password properties)
              to the ejb tier and store this connection in the HttpSession? (basically authenticating
              a 2nd time)
              OR,
              can the servlet container make a generic connection to the ejb container, and pass
              the users security context to the ejb tier transparantly?
              -Sam
              

    Nick Minutello <[email protected]> wrote:
              > Assuming that web container security is being employed, I guess the fundamental question
              > is: Is it necessary to create a "connection" (ie. an InitialConext) per user, or
              > can a "global" initial context be shared (in the end, the TCP connection is shared
              > anyway)?
              It doesn't create a 'connection' per user - when you use JNDI authentication (specifying
              principal and credentials when constructing InitialContext) it associates security info
              with the current thread for the duration of the request. If you cache InitialContext and
              use it later on some other thread it will not do anything.
              > Does it really matter?
              No ;-)
              > Thanks,
              > Nick
              > "Dimitri I. Rakitine" <[email protected]> wrote:
              >>Nick Minutello <[email protected]> wrote:
              >>
              >>
              >>> OK, so when I create the InitialContext, I just specify the URL (to call
              >>the remote
              >>> EJB container). The user ID and credentials are mapped automatically.
              >>
              >>> I obviously also need to cache the initialContext variable in my HTTPSession
              >>object?
              >>
              >>> What would happen if I had one InitialContext for the whole servlet engine
              >>- and
              >>> each thread used that. Would the thread (security) context still get passed
              >>- or
              >>> would the credentials for the original connection get used?
              >>
              >>If you use web-app security, container will associate security info with
              >>the current
              >>thread before invoking your servlet. If you do not use it and cache InitialContext,
              >>
              >>then the current user will always be 'guest' (except for the very first
              >>time when
              >>application calls 'new InitialContext()' with username/password.
              >>
              >>
              >>> Thankyou.
              >>> -Sam
              >>
              >>
              >>> "Vinod Mehra" <[email protected]> wrote:
              >>>>
              >>>>"Sam the bad cat" <[email protected]> wrote in message
              >>>>news:[email protected]...
              >>>>>
              >>>>>
              >>>>> When you have the servlet container and the ejb container on different
              >>>>physical servers,
              >>>>> how is the rmi connection meant to to be done while still maintaining
              >>>>the
              >>>>seucrity
              >>>>> propagation from servlet to ejb tier?
              >>>>>
              >>>>> Assume that my user is already authenticated (forms) on the servlet
              >>tier.
              >>>>Do we then
              >>>>> create a dedicated connection (InitialContext + url/username/password
              >>>>properties)
              >>>>> to the ejb tier and store this connection in the HttpSession? (basically
              >>>>authenticating
              >>>>> a 2nd time)
              >>>>>
              >>>>> OR,
              >>>>> can the servlet container make a generic connection to the ejb container,
              >>>>and pass
              >>>>> the users security context to the ejb tier transparantly?
              >>>>
              >>>>If the user has logged in already, ie the authenticated user is already
              >>>>in
              >>>>the execute
              >>>>thread, the identity should be propgated to the ejb tier transparantly,
              >>>>when
              >>>>you create the
              >>>>new initial context.
              >>>>
              >>>>--Vinod.
              >>>>
              >>>>
              >>>>>
              >>>>> -Sam
              >>>>>
              >>>>>
              >>>>
              >>>>
              >>
              >>--
              >>Dimitri
              >>
              Dimitri
              

  • Porblem with Java Proxy EJB deploy to XI through NWDI

    Situation - I have a web app in Server A (WAS7), it needs to call a java proxy in Server B (XI WAS7). I want to deploy the Java Proxy EJB into the landscape using NWDI. To do this I created an external library with public parts that contains the required jars to build the java proxies. These are aii_msg_runtime.jar, aii_proxy_xirt.jar, and aii_utilxi_misc.jar. The EJB module used part is mapped to the library's public parts. Everything builds fine and the deployment was successful into XI.
    Problem - When my web application makes a remote call to the java proxy in XI, NoClassDefFoundError occurs. The first jar that it complain about was aii_util_cimaccess.jar. I included this jar into the library and redeployed. Called the java proxy again, and got another NoClassDefFoundError exception. Now it wanted the lrcclient.jar. I included that into the library and redeployed. Now it wanted another jar. The issue is that all these jars are in the XI server and I shouldn't have to add them as part of the library. Is there a SCA out there that contains these jars, or did I just forget to mark a checkbox somewhere when creating the EJB so that it would reference the XI jars without me adding them to the library?
    Note - This architecture works fine without having to add the jars above, if I deploy the Java Proxy EJB from my workspace to XI through the SDM process available through NWDS. This only breaks when I deploy through NWDI.
    Thank you in advance.

    HI,
    please see the below link
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/bc7f08e1-0901-0010-b1bd-80966009d8f0
    http://help.sap.com/saphelp_nw2004s/helpdata/en/40/00be09879f114aa1ec46c2afa4445b/frameset.htm
    To add On-
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/9221b490-0201-0010-0e90-8cc75cde876c
    http://help.sap.com/saphelp_webas630/helpdata/en/cb/f4bc3d42f46c33e10000000a11405a/content.htm
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/eaeb475d-0c01-0010-f5a4-d7a8eb185793
    Regards
    Chilla

  • Webserver/jsp engine call into weblogic ejb container

    Which one of these architectures would give the best performance.
              First architecture:
              3 boxes -
              1st box - webserver(IIS or IPlaner) with a JSP engine. (The JSP's
              produce dynamic content.)
              2nd box - weblogic 5.1 hosting EJB's
              3rd box - Oracle or DB2
              The 1st box is used to server up dynamic contect. The JSP's make dynamic
              contect from calls into the EJB container in the 2nd box. The EJB's then
              calls the DB in the 3rd box.
              2nd architecture:
              3 boxes-
              1st box - webserver with weblogic plug-ins for IIS or IPlanet
              2nd box - weblogic 5.1 - hosting JSP pages and EJBs
              3rd box - Oracle or DB2
              The 1st box's webserver just receives the request to JSPs and lets the
              plug-in find the appropriate weblogic instance. The JSPs that are processed
              on the 2nd box make calls into the EJB container on the 2nd box. The EJBs
              then make calls to the DB on the 3rd box.
              thanks
              -cb
              

    thanks you both for you input
              "Cameron Purdy" <[email protected]> wrote in message
              news:[email protected]...
              > It is certainly more efficient in terms of JSP/Servlet to EJB invocations
              if
              > you use WebLogic to do all three (JSP/Servlet/EJB) due to the
              well-designed
              > client stubs for EJBs that do pass-by-reference. If you have lots of
              small
              > invocations to EJBs, that is a good reason to consider WL for all three
              > (JSP/Servlet/EJB).
              >
              > OTOH there are a good number of developers that I have spoken with that
              > prefer other Servlet engines. These developers have had excellent
              > experiences with WL EJB handling, but some issues with JSP/Servlets, or
              > simply needed features offered by other servers. A few may have decided
              on
              > a price basis. Some of the technical issues were related to WL class
              > loading issues that are scheduled to be completely improved in the fall WL
              > release.
              >
              > All of that said, I personally would probably stick with WL to do all
              three
              > (JSP/Servlet/EJB). I believe that I have found most of the problems that
              WL
              > has ;-) and I have come through the other side still really liking the
              > product -- so even it's worst points (like the linkage error that had me
              > pulling out my hair and even searching through the Sun JVM sources ;-)
              > aren't that bad because it is a strong enough product that there are
              always
              > ways to work through or around just about anything. If I had to look at a
              > different JSP/Servlet engine, I would start with Caucho Resin, simply
              > because I like their approach and I know it works well with WL.
              >
              > Lastly remember that in the J2EE world, "no one ever got fired for buying
              > BEA WebLogic!"
              >
              > --
              >
              > Cameron Purdy
              > http://www.tangosol.com
              >
              >
              > "Chris Bick" <[email protected]> wrote in message
              > news:[email protected]...
              > > So you would not support/advise an architecture that has the JSP/Servlet
              > > engine on a different box then weblogic? If this is the case, could you
              > > give some reasons why?
              > >
              > > thanks,
              > > -cb
              > > "Cameron Purdy" <[email protected]> wrote in message
              > > news:[email protected]...
              > > > 1. Your bottleneck will probably be the third box (database server)
              in
              > > > either scenario. That's probably your biggest up-front cost -- making
              > > sure
              > > > the db server is up to the task.
              > > > 2. The second architecture is suggested by WL. The reason is that if
              > box
              > > > #2 (WL) is a cluster, you can theoretically add more boxes easily to
              get
              > > > pseudo-linear scaling for JSP and EJB processing. Of course, that
              only
              > > > helps if your database is not a bottleneck ;-) WL cluster is $17k per
              > > CPU.
              > > > 3. The real answer is that it depends on your application and the
              > number
              > > of
              > > > users that you are expecting. You want to make sure that when your
              site
              > > is
              > > > loaded that there is no significant queueing of requests on the WL
              side.
              > > I
              > > > believe you can see that information in the WL monitor.
              > > >
              > > > --
              > > >
              > > > Cameron Purdy
              > > > http://www.tangosol.com
              > > >
              > > >
              > > > "Chris Bick" <[email protected]> wrote in message
              > > > news:[email protected]...
              > > > > Which one of these architectures would give the best performance.
              > > > >
              > > > > First architecture:
              > > > >
              > > > > 3 boxes -
              > > > >
              > > > > 1st box - webserver(IIS or IPlaner) with a JSP engine. (The
              > > JSP's
              > > > > produce dynamic content.)
              > > > > 2nd box - weblogic 5.1 hosting EJB's
              > > > > 3rd box - Oracle or DB2
              > > > >
              > > > > The 1st box is used to server up dynamic contect. The JSP's make
              > > dynamic
              > > > > contect from calls into the EJB container in the 2nd box. The
              EJB's
              > > then
              > > > > calls the DB in the 3rd box.
              > > > >
              > > > > 2nd architecture:
              > > > >
              > > > > 3 boxes-
              > > > >
              > > > > 1st box - webserver with weblogic plug-ins for IIS or IPlanet
              > > > > 2nd box - weblogic 5.1 - hosting JSP pages and EJBs
              > > > > 3rd box - Oracle or DB2
              > > > >
              > > > > The 1st box's webserver just receives the request to JSPs and lets
              the
              > > > > plug-in find the appropriate weblogic instance. The JSPs that are
              > > > processed
              > > > > on the 2nd box make calls into the EJB container on the 2nd box.
              The
              > > EJBs
              > > > > then make calls to the DB on the 3rd box.
              > > > >
              > > > > thanks
              > > > > -cb
              >
              >
              >
              

  • How ejb-jar.xml is Used by ejb Container

    Hi,
        Can anyone please explain me about how ejb-jar.xml is Used by ejb Container when a request is sent by a client(ie StandAlone program or a WebService)
    Thanks in Advance
    Venkat.

    Hi Benny,
    Nice answer to a self explainig question :-).
    Regards,
    Daniel
    p.s. THX to Sun and J2EE 5 and especially EJB3 (and don't forget about SAP, NWCE is really cool!!!)

  • How to use embeddable EJB container (Java EE 6 / EJB 3.1) on Mac OS?

    To my understanding, the intent of the embeddable EJB 3.1 container is - among others - to support out-of-container testing. I've created a JUnit test case that uses glassfish embeddable for integration testing of ejb 3.1 Light ejbs. I run the tests using Maven.
    I have one general problem and one problem specific to Mac OS (I'm not able to use the embeddable container at all on Mac OS).
    1. First the general problem: the ejb container does not inject or publish classes that are on the test class-path only:
    src>main>java>MyEjb.class
    src>test>java>MyTestEjb.class
    The test case looks like this:
    public class TestCase1b {
         static EJBContainer container;
         @BeforeClass
         public static void initEjbContainer() {
              container = EJBContainer.createEJBContainer();
              for ( Object property : System.getProperties().keySet() ) {
              System.out.print(property + " : ");
              System.out.println(System.getProperty((String)property));
         @Test
         public void canTestWithTransaction() throws NamingException, NotSupportedException, SystemException {
              Context ctx = container.getContext();
              OrderServiceTesterEjb orderServiceTester = (OrderServiceTesterEjb) ctx
                        .lookup("java:global/classes/OrderServiceTesterEjb");
              Assert.assertNotNull(orderServiceTester.testCreateOrderWithTransaction());
         @AfterClass
         public static void closeEjbContainer() {
              container.close();
    The idea with a test-ejb is to mimic the way I typically perform junit integration testing with Spring: the test database i preloaded with test data. Each test-method of the junit test case starts a transaction, invokes the service, evaluates the state of the database and finally performs a rollback. My idea was to mimic that by creating a test ejb (Stateless, REQUIRES_NEW), that injects the EJB to test, calls the method to test, evaluates the result or db state and finally sets rollbackonly before returning. The problem is that the test case can lookup ejbs in src/main/java, but not the "test" ejbs in src/test/java. My workaround is to include the test-EJBs in src/main/java which I think is not acceptable.
    2. Next the Mac-problem:
    The Mac OS JDK 1.6 contains version 1.0 of javax.annotation (jsr 250). EJBs developed with Java EE 6 depends on version 1.1 of javax.annotation. Specifically, one typically need @Resource(lookup=... and @DataSourceDefinition of javax.annotation.sql which are both missing in the JDK. I can compile my EJBs by adding the javaee-api-6.0.jar library to my classpath. But when running unit tests with maven (as described above), a runtime error is reported, stating that the lookup-property of the @Resource annotation is undefined. This is logical, since the boot classpath should have precedence. So I added javaee-api-6.0.jar to the lib/endorsed directory of the jre. Unfortunetely, this triggers a segmentation fault of the Mac OS JVM when running the test. I have no other workaround than switching to windows. Any help / hints are much appreciated.
    /Johan

    Just as an update, we're soon to release the WLS 11g R1 PS2 update, which will contain WLS 10.3.3 just to confuse things.
    As part of that, we're distributing for the first time, an additional .zip version of WLS to make it easier for developers.
    The zip file distribution has no GUI installer -- it's a simple case of unzip, run a script it provides, then start the server.
    The zip file distribution has been specifically tested on Mac OS X and the WLS config/domain scripts automatically adjust as necessary for the Mac OS X java environment.
    Once the zip file distribution is available, we hope that developing against WLS on Mac OS X (and Windows/Linux) will be an easier task.
    -steve-

  • Error while setting up existing code--WSAD+EJB container caught java.lang.

    [5/8/08 9:12:31:741 IST] 3bb9beb5 BeanMetaData E CNTR0035E: EJB container caught java.lang.NoClassDefFoundError: com/scb/scp/util/exceptions/SCPException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:1753)
    at java.lang.Class.privateGetPublicMethods(Class.java:1781)
    at java.lang.Class.getMethods(Class.java:896)
    at com.ibm.ejs.container.util.DeploymentUtil.getMethods(DeploymentUtil.java:124)
    at com.ibm.ejs.container.BeanMetaData.initializeBeanMethods(BeanMetaData.java:1522)
    at com.ibm.ejs.container.BeanMetaData.completeInitialization(BeanMetaData.java:1359)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createBeanMetaData(EJBContainerImpl.java:981)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createModuleMetaData(EJBContainerImpl.java:796)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createMetaData(EJBContainerImpl.java:1517)
    at com.ibm.ws.runtime.component.MetaDataMgrImpl.createFactoryMetaData(MetaDataMgrImpl.java:115)
    at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaData(MetaDataMgrImpl.java:159)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:350)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:575)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:271)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:249)
    at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
    at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
    at com.ibm.ws.runtime.component.ApplicationServerImpl.start(ApplicationServerImpl.java:125)
    at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
    at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
    at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:183)
    at com.ibm.ws.runtime.WsServer.start(WsServer.java:128)
    at com.ibm.ws.runtime.WsServer.main(WsServer.java:225)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:41)
    at java.lang.reflect.Method.invoke(Method.java:386)
    at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:94)
    at com.ibm.etools.websphere.tools.runner.api.ServerRunnerV5$1.run(ServerRunnerV5.java:97)
    and is throwing com.ibm.ejs.container.ContainerException: Failed to initialize BeanMetaData instance - caught Throwable; nested exception is:
    java.lang.NoClassDefFoundError: com/scb/scp/util/exceptions/SCPException
    at com.ibm.ejs.container.BeanMetaData.completeInitialization(BeanMetaData.java:1456)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createBeanMetaData(EJBContainerImpl.java:981)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createModuleMetaData(EJBContainerImpl.java:796)
    at com.ibm.ws.runtime.component.EJBContainerImpl.createMetaData(EJBContainerImpl.java:1517)
    at com.ibm.ws.runtime.component.MetaDataMgrImpl.createFactoryMetaData(MetaDataMgrImpl.java:115)
    at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaData(MetaDataMgrImpl.java:159)
    at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:350)
    at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:575)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:271)
    at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:249)
    at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
    at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
    at com.ibm.ws.runtime.component.ApplicationServerImpl.start(ApplicationServerImpl.java:125)
    at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
    at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
    at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:183)
    at com.ibm.ws.runtime.WsServer.start(WsServer.java:128)
    at com.ibm.ws.runtime.WsServer.main(WsServer.java:225)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:41)
    at java.lang.reflect.Method.invoke(Method.java:386)
    at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:94)
    at com.ibm.etools.websphere.tools.runner.api.ServerRunnerV5$1.run(ServerRunnerV5.java:97)
    Caused by: java.lang.NoClassDefFoundError: com/scb/scp/util/exceptions/SCPException

    Hello again,
    What do you exactly mean by saying:
    Did you create the deployment code?
    I deployed the EJB on the Application Server is there anything else i have to do?
    -regards
    Fabian

  • Interop Survey: Which EJB Container is _known_ to work with which RDBMS?

    Which EJB Container
    have you personally used to successfully deploy entity beans
    in combination with which RDBMS Server Product[s]
    in a production environment supporting more than just a few users?
    EJB Container
    .VendorName =
    .ProductName =
    .ProductVersion =
    .ProductLanguage =
    .EJB-Spec-Version =
    RDBMS Server 1
    .VendorName =
    .ProductName =
    .ProductVersion =
    .ProductLanguage =
    Did you do multi database update ACID transactions that were managed by the EJB Container (ie CMP not BMP)?
    YES
    NO
    If so, did you do them across more than one RDBMS Server Product, such as mixing DB2 with SQL Server?
    YES
    NO
    RDBMS Server Product 2
    .VendorName =
    .ProductName =
    .ProductVersion =
    .ProductLanguage =
    I intend to publish the results to this forum by 15 Aug 2005.
    Please post any responses until 31 July 2005 so I can consider them in the survey.

    Tomcat does not support EJB deployment as it is a mere servlet engine. But it can be integrated with with JBoss, an app server which is freely available.
    -amit

  • Dynamic Class Loading in an EJB Container

    Hello,
    We have a need to load classes from a nonstandard place with in an ejb container, ie a database or secure store. In order to do so we have created a custom class loader. Two issues have come up we have not been able to solve, and perhaps some one knows the answer to.
    Issue 1.
    Given the following code:
    public static void main(String args[])
    MyClassLoader loader = new MyClassLoader("lic.dat");
    System.out.println("Loading class ..." + "TestObject");
    Object o = Class.forName("TestObject",true,loader).newInstance();
    System.out.println("Object:" + o.toString());
    TestObject tstObj = (TestObject) o;
    tstObj.doIt();
    What happens when executed is as follows. Class.forName calls our loader and does load the class as we hoped, it returns it as well, and the o.toString() properly executes just fine. The cast of the object to the actual TestObject fails with a class not found exception. We know why this happens but don't know what to do about it. It happens because the class that contains main was loaded by the system class loader (the primordial class loader as its sometimes called), That class loader does not know about TestObject, so when we cast even though the class is "loaded" in memory the class we are in has no knowledge of it, and uses its class loader to attempt to find it, which fails.
    > So the question is how do you let the main class know to use our class loader instead of
    the system class loader dispite the fact is was loaded by the system class loader.
    Issue 2:
    To make matters worse we want to do this with in an EJB container. So it now begs the question how do you inform an EJB container to use a specific class loader for some classes?
    Mike...

    Holy crap! We are in a similar situation. In creating a plugin engine that dynamically loads classes we use a new class loader for each plugin. The purpose is so that we can easily unload and/or reload a class at runtime. This is a feature supposedly done by J2EE app servers for hot-deploy.
    So our plugins are packaged as JAR files. If you put any class in the CLASSPATH, the JVM class loader (or the class loader of the class that is loading the plugin(s)), will load the class. The JavaDoc API states that the parent classloader is first used to see if it can find the class. Even if you create a new URLClassLoader with NULL for parent, it will always use the JVM class loader as its parent. So, ideally, in our couse, plugins will be at web sites, network drives, or outside of the classpath of the application and JVM.
    This feature has two benefits. First, at runtime, new updates of plugins can be loaded without having to restart the app. We are even handling versions and dependencies. Second, during development, especially of large apps that have a long startup time, being able to reload only one plugin as opposed to the annoying startup time of Java apps is great! Speeds up development greatly.
    So, our problem sounds just like yours. Apparently, the Client, which creates an instance of the plugin engine, tries to access a plugin (after the engine loades it via a new classloader instance for each plugin). Apparently, it says NoDefClassFound, because as you say, the client classloader has no idea about the plugin class loaded by another classloader.
    My co-developer came up with one solution, which I really dont like, but seems to be the only way. The client MUST have the class (java .class file) in its classpath in order to work with the class loaded by another class loader. Much like how in an EJB container, the web server calling to EJB MUST contain the Home and Remote interface .class files in its classpath, the same thing needs to be done here. For us, this means if a plugin depends on 5 others, it must contain ALL of the .class files of those plugins it depends on, so that the classloader instance that loads the plugin, can also see those classes and work with them.
    Have you got any other ideas? I really dislike that this has to be done in this manner. It seems to me that the JVM should be able to allow various class loaders to work with one another in such a way that if a client loaded by one classloader has an import statement in it to use a class, the JVM should be able to fetch the .class out of the other classloader and share it, or something!
    This seems to me that there really is no way to actually properly unload and then reload a class so that the JVM will discard and free up the previous class completely, while using the new class.
    I would be interested in discussing this topic further. Maybe some others will join in and help out on this topic. I am surprised there isn't a top-level forum topic about things like class loaders, JVM, etc. I wish there was a way to add one!

  • CDI not working in Weblogic 12c Embedded EJB Container?

    Hi,
    we are trying to use embedded ejb container from weblogic 12c (12.1.2.0) for our junit tests.
    As our application is running in weblogic 12c, we would like to run our tests  in same environment.
    But we encountered two problems, which brings me to the conclusion that CDI is not working correctly in embedded ejb container.
    1. CDI Interceptor are not working
    2. CDI Objects (@Inject) are null
    I can provide an error message, which I think is thrown, when container tries to access the interceptor, because if I delete the interceptors the error message gets no longer thrown:
    Caused by: java.lang.UnsupportedOperationException: authenticatedLookup is unavailable for BasicNamingNode types
          at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java:234)
          at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:463)
          at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:274)
          at weblogic.jndi.internal.ServerNamingNode_12120_WLStub.authenticatedLookup(UnknownSource)
          at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:483)
    We just want to know, if CDI is not working in embedded ejb container, so we can go ahead and look for another solution for our junit tests.
    Stefan

    Hi There,
    If you have access to Oracle Support Portal, please go through below Knowledge Articles which can provide more information on your requirement:
    Sample Application Using Timer API (CommonJ) to configure Timer Based tasks in Oracle WebLogic Cluster 10.3.X Cluster (Doc ID 1614886.1)
    Clustered EJB Timer - The minimum time for recurring execution of a timer (Doc ID 1931091.1)
    Let us know if it helps.
    Cheers,
    Naveen

  • How to get current connection from ejb container

    We have to execute sql statement directly to the database and will use for this issue to connection establish between the ejb container and the database.
    How to get the corresponding object ?

    thanks

  • Web Service-Client for stateful session EJB container

    Do you know, how to write a Web Service-Client to connect a stateful session EJB container?
    A stateful session EJB container ist created with Web Logic 8.1.
    Message was edited by n.t.c at Dec 14, 2004 6:09 AM

    Pedja thanks for reply.
    I still dont understand what is wrong with my example.
    The first peace of the code i wrote (getting the reference to the remote interface object) works pretty well, and even more it is produced automatically by JDeveloper, so why we cant get a reference to the local interface object the same way?
    Certanly we should use the local interface for getting access to the resource functioning under the same local jvm and i think it doesnt metter wich app server we really use wls or oas or others
    Thanks. Alex.

  • How can i locate the properties files within a ejb container?

    when i develop servlet+javabean structure application,in order to imploement decoupling,i
    would like to write the config information in the properties files(key-value pair),in
    servlet,i use "getResourceAsStream(String relativePath)" method to retrieve the
    configuration information from the properties files(i even write the SQL clause
    in the files),it alwsys works well.
    now,i want to implement such function within the ejb container,that is to read
    a properties file from session bean,but i don't know how can i locate the file
    within the ejb container by using relative path,i wonder if there is the same
    method within ejb container as "getResourceAsStream(.......)" method within servlet
    container?
    thanks for any helps!
    the code snippet is appreciated!

    In general, you should look at using environment entries (variables) in the
    deployment descriptors (both the war and EJB jar rather than properties
    files for configuring J2EE applications. The reasons for this are many:
    1. This is the official way to do it according to the spec. Properties
    files are the J2SE way of doing things
    2. As you note, that it's not obvious how you would (legally) read a
    properties file inside an EJB.
    3. It's consistent between the web and EJB part of your code
    4. the weblogic console and tools have good capabilities to edit these
    fields.
    Kent
    "zhebincong" <[email protected]> wrote in message
    news:[email protected]..
    >
    when i develop servlet+javabean structure application,in order toimploement decoupling,i
    would like to write the config information in the propertiesfiles(key-value pair),in
    servlet,i use "getResourceAsStream(String relativePath)" method toretrieve the
    configuration information from the properties files(i even write the SQLclause
    in the files),it alwsys works well.
    now,i want to implement such function within the ejb container,that is toread
    a properties file from session bean,but i don't know how can i locate thefile
    within the ejb container by using relative path,i wonder if there is thesame
    method within ejb container as "getResourceAsStream(.......)" methodwithin servlet
    container?
    thanks for any helps!
    the code snippet is appreciated!

  • EJB container caught java.lang.NoClassDefFoundError package/classname

    Hello,
    If i start the Websphere 5.1 Test Environment with my EAR deployed in it the following Error appears:
    EJB container caught java.lang.NoClassDefFoundError: package/class
         at java.lang.Class.getDeclaredMethods0(Native Method)
         at java.lang.Class.privateGetDeclaredMethods(Class.java(Compiled Code))
         at java.lang.Class.privateGetPublicMethods(Class.java:1911)
         at java.lang.Class.getMethods(Class.java:909)
         at com.ibm.ejs.container.util.DeploymentUtil.getMethods(DeploymentUtil.java:124)
         at com.ibm.ejs.container.BeanMetaData.initializeBeanMethods(BeanMetaData.java:1566)
         at com.ibm.ejs.container.BeanMetaData.completeInitialization(BeanMetaData.java:1403)
         at com.ibm.ws.runtime.component.EJBContainerImpl.createBeanMetaData(EJBContainerImpl.java:1039)
         at com.ibm.ws.runtime.component.EJBContainerImpl.createModuleMetaData(EJBContainerImpl.java:830)
         at com.ibm.ws.runtime.component.EJBContainerImpl.createMetaData(EJBContainerImpl.java:1575)
         at com.ibm.ws.runtime.component.MetaDataMgrImpl.createFactoryMetaData(MetaDataMgrImpl.java:115)
         at com.ibm.ws.runtime.component.MetaDataMgrImpl.createMetaData(MetaDataMgrImpl.java:159)
         at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:350)
         at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:578)
         at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:311)
         at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:268)
         at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
         at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
         at com.ibm.ws.runtime.component.ApplicationServerImpl.start(ApplicationServerImpl.java:152)
         at com.ibm.ws.runtime.component.ContainerImpl.startComponents(ContainerImpl.java:536)
         at com.ibm.ws.runtime.component.ContainerImpl.start(ContainerImpl.java:413)
         at com.ibm.ws.runtime.component.ServerImpl.start(ServerImpl.java:246)
         at com.ibm.ws.runtime.WsServer.start(WsServer.java:128)
         at com.ibm.ws.runtime.WsServer.main(WsServer.java:225)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
         at java.lang.reflect.Method.invoke(Method.java:391)
         at com.ibm.ws.bootstrap.WSLauncher.run(WSLauncher.java:222)
         at java.lang.Thread.run(Thread.java:570)
    Does anyone know where the failure could lie?
    - Thanks and regards
    Fabian

    Hello again,
    What do you exactly mean by saying:
    Did you create the deployment code?
    I deployed the EJB on the Application Server is there anything else i have to do?
    -regards
    Fabian

  • Calling a Java aplication from EJB container

    We have a standalone Java application which is thread safe, and works well when called from web container. Now we are planning to call this app from EJB container (We are using OC4J) i.e our client apps which call this Java app will be written as EJBs. Our concern is to make sure that our application's thread mechanism does not conflict with EJB Container's thread mechanism. Any thoughts on this will be appreciated. Thanks. (Mubashar Tariq)

    Thread management isn't really a problem as long as you keep a couple of things in mind:
    1. You(r EJB) can only act on incoming calls (or messages) or so to say
    2. You're not allowed to spawn threads when acting on an incoming call
    3. Calls via RMI may timeout (check the default SocketFactory for the timeout, I think it's about 3 mins)
    Calling an outside application isn't really a problem as well I think. As long as you remember the two rules above and the following: an EJB cannot have two 'clients'. So if your application gets called and you're somehow able to reach (within your standalone application) the EJB, you're not allowed to call it (because it's already called by somebody else, on which the EJB acts).
    Also you should check if OC4J (I don't really know) offers the possibility of having resourcemanagers for RMI. Just opening an RMI connection might not be possible from an EJB. HTTP however is (but then you would have to open an HTTP server at the client, the rules above would not apply then however).
    The solution I see:
    either bind a Object in the RMI Registry you create at the client or open a ServerSocket. Somehow the EJB making the client application gets called (via the Web part???), it contacts the client application via the ServerSocket or the RemoteObject and does it work. Then the business method ends and the thread the EJB is working on dies...
    alef

Maybe you are looking for

  • TinyMCE in WPC

    Hi, i would like to know if anyone managed to integrate the tinyMCE in WPC in such depth that you don´t have to copy the KM links when you e.g. insert a picture from KM or when you insert a link to a KM document. In more detail...does anyone manage t

  • ESS Webdynpro Java Employee enqueue / lock

    Hi, the ESS-WebDynpro-Java Applications (f.e. esspdata, essadr, ess~cats) lock the employee in HCM Backend System. How long is the duration of the lock, is it possible to customize the duration? Regards

  • Will there be a siri update for ipod touch??

    I was wondering if there would be a siri update for ipod touch in the near future.

  • XMLTYPE column

    Hi, Does anyone know why i can't insert characters like ù,ï ... in a xmltype column ? i use WE8ISO8859P15 and varchar2 columns are ok with theses characters. Thanks in advance,

  • WPA-PSK with TKIP but without MIC

    Does WPA-PSK with TKIP encryption not support MIC? any input is very welcome Oliver