Common classes across separate EJB jars

What is the best way to package classes that are common across separate EJB jar files? IE, i have an object that is passed between the 2, or a utility that is used by both. Is it customary to package the classes within the EJB jar file? This seems silly to me because
now you have 2 versions of the same class that could possibly change in one of them. Or should I put the classes into the classpath of the J2EE container? Thanks for any advice.

Both ways will work, we prefer the first one (packaging the classes in both jars). We are using BEA WebLogic 6.x and putting it in the containers classpath would mean to restart the server every time we changed this classes. Mabe you should consider making a single jar for both EJBs if they will always be used together.
Regards,
hedtfeld.

Similar Messages

  • How to share common classes across multiple projects in Jdeveloper?

    Hi Experts,
    I have a basic question.
    I am using Jdeveloper 11g and have divided my application into 2 projects (Model(ejb's) and Viewcontroller(jsf+managed beans etc)).
    The model project has a stateless session bean(named VisitingScholarBean) which uses a java bean class(named VisitingScholarDetails) defined in the ViewController project.
    The relevant Method in the stateless session bean is public void saveVSDetails(VisitingScholarDetails vsDetails).
    Now the issue is that the VisitingScholarDetails class is part of only the ViewController project but is being used in the Model project.
    So when I try to run the application it gives an error saying that
    weblogic.application.ModuleException: Exception preparing module: EJBModule(VisitingScholar-Model-ejb)
    [EJB:011023]An error occurred while reading the deployment descriptor. The error was:
    edu/nyu/ecoms/oaa/vs/web/backing/VisitingScholarDetails.
         at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:452)
         at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
         at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
         at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
         at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:58)
         Truncated. see log file for complete stacktrace
    java.lang.ClassNotFoundException: edu.nyu.ecoms.oaa.vs.web.backing.VisitingScholarDetails
         at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
         at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
         at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
         at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:176)I cannot replicate the same VisitingScholarDetails class in both projects as it will lead to duplication.
    Please let me know how to include the VisitingScholarDetails class in the ejb-jar without replicating it in the Model and View Controller projects.
    Thanks for your time and help.
    Edited by: user10376431 on Jan 24, 2010 6:25 AM

    Welcome User in OTN,
    to make two projects can access its classes you should goto the project property ---> Dependencies then add the other project.
    in your case:
    try to goto you Model project property ----> Dependencies ---> Edit Dependencies .
    you will find your ViewController project. Expand it thin check to Build Output.
    you can make this for ViewContoller project also as:
    goto you ViewContoller project property ----> Dependencies ---> Edit Dependencies .
    you will find your Model project. Expand it thin check to Build Output.
    Sameh Nassar

  • Kodo doesn't like more than one EJB JAR

    Hi,
    If EJB JAR A has persistent class Apple and EJB JAR B has persistent class Orange, then A can't open
    a PM because the registered class Orange can't be found, and B can't open a PM because the
    registered class Apple can't be found.
    This can't be right.
    David Ezzio

    David,
    There is one rather roundabout way that you should be able to set WarnOnPersistentTypes in Kodo JDO 2.3.0.
    Our configuration interface provides a DictionaryProperties dictionary configuration string. This string contains space-delimited key-value pairs that are set via reflection when a dictionary is created. So, if you set the DictionaryProperties configuration setting to 'WarnOnPersistentTypes=true', the right thing should happen.
    Note that you may need to muck with the ra.xml file to let JBoss know that the DictionaryProperties setting exists.
    -Patrick
    David Ezzio wrote:
    >
    Hi Marc,
    For some reason, this property doesn't seem to always take. Particulary, the schematool seems to
    ignore it even when it is in the system kodo.properties. In the case of EJB's how is it supposed to
    be set? I can't set it in the kodo-service.xml because of the JBoss issue with boolean properties.
    David
    Marc Prudhommeaux wrote:
    David-
    You need to have
    com.solarmetric.kodo.impl.jdbc.WarnOnPersistentTypeFailure set to true
    in order to run in an EJB container, otherwise Kodo tries to
    validate all the persistent classes on startup (which will fail, since
    EJB jars typically are loaded in a different ClassLoader than other EJB
    jars in the same environment).
    In article <[email protected]>, David Ezzio wrote:
    Hi,
    If EJB JAR A has persistent class Apple and EJB JAR B has persistent class Orange, then A can't open
    a PM because the registered class Orange can't be found, and B can't open a PM because the
    registered class Apple can't be found.
    This can't be right.
    David Ezzio--
    Marc Prud'hommeaux [email protected]
    SolarMetric Inc. http://www.solarmetric.com
    Kodo Java Data Objects Full featured JDO: eliminate the SQL from your code

  • Deployed EJB.jar has some classes with zero bytes

    Has anyone hit a situation where Windows Jdev 902 puts class files into the ....EJB.jar file with zero bytes? In my case, the eight zero length classes are: seven My...Row.class files and the MyApplicationModule.class file. They all are in the /mypackage/common/ package and are in the ...classes/mypackage/common/ file folder.
    I can use PKZIP to delete the zero length classes and add them back into the .jar and everything works as expected.
    There are no error messages generated during the deployment that creates the .jar file that has the problem.

    This was posted on another thread by jdev team...
    We have been following this issue in support TAR 2274825.996. I sent some technical detail to the support rep on July 10, but it looks like that information never got added to the TAR. Well, FWIW, here it is:
    The user may be running out of open files. The
    stdio library which underlies Win32 programs (like the JVM) has a
    limit on the number of files that can be open concurrently. The
    limit is around 2000-2100 open files (I tested this on NT, 2000, and
    XP), and the limit is on a per-process basis. If the user is running
    into this limit because JDev has too many open files, then the utility
    methods we use to open JAR files or other streams could be receiving
    a java.io.FileNotFoundException exception with the message "Too many
    open files". To verify this: go to the Windows Task Manager, go to
    View | Select Columns... and be sure the "Handle Count" checkbox is
    checked. Does the jdev.exe process have a disproportionately higher
    number of handles than other processes? If the Handle Count is above
    2000 (approx), JDev might be running out of open files. (I say "might" because
    the Handle Count is for many different kinds of Win32 kernel objects,
    not just for file handles.) If the Handle Count is the problem, then
    it would explain the transient, nondeterministic behavior that the
    user is reporting. Because the Handle limit is per-process, it would
    explain why the user is able to use PKZIP or WinZip to repair the JAR
    file. Try closing editors before deploying and see if that helps.
    If the user confirms that the Handle Count is excessive, then we may
    have a Handle leak of some kind in the product that will need to be
    fixed.
    Also try running JDev using "jdev -hotspot" on the command line instead
    of just "jdev" and see if the behavior changes.
    Hope that helps. We are monitoring the TAR, but no one has been able to reproduce the problem you are reporting, even with the files attached to the TAR, and yours is the only report so far that we've received about this specific problem.
    I have added several more entities and views into app module. As I added each one, the list of zero byte jar classes would change, but always about 7-8 bad ones. Now that I am no longer adding new entities/views, the problem has become stable and repeatable. The same classes ALWAYS show up with zero bytes.
    I monitored jdevw.exe while doing the deploy, and the number of handles never went above 675. I ran with jdevw.exe -hotspot and the results were exactly the same.
    thanks,
    Roger

  • Unable to load a class specified in your ejb-jar.xml

    I was trying an example on entity bean CMP, i created the bean and tried to deploy it.I got the following error :-
    Exception:weblogic.management.ApplicationException: prepare failed for CMP Module: CMP Error: Exception preparing module: EJBModule(CMP,status=NEW) Unable to deploy EJB: C:\bea\user_projects\domains\Testdomain\applications\CMP.jar from CMP.jar: weblogic.ejb20.deployer.DeploymentDescriptorException: Unable to load a class specified in your ejb-jar.xml: pack.sams.ItemBean at weblogic.ejb20.deployer.MBeanDeploymentInfoImpl.initializeBeanInfos(Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Lweblogic.utils.classloaders.GenericClassLoader;)V(MBeanDeploymentInfoImpl.java:550) at weblogic.ejb20.deployer.MBeanDeploymentInfoImpl.<init>(Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Lweblogic.utils.classloaders.GenericClassLoader;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.utils.jars.VirtualJarFile;)V(MBeanDeploymentInfoImpl.java:232) at weblogic.ejb20.deployer.EJBDeployer.prepare(Lweblogic.utils.jars.VirtualJarFile;Ljava.lang.ClassLoader;Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Ljavax.naming.Context;Ljava.util.Map;)V(EJBDeployer.java:1302) at weblogic.ejb20.deployer.EJBModule.prepare(Ljava.lang.ClassLoader;)V(EJBModule.java:498) at weblogic.j2ee.J2EEApplicationContainer.prepareModule(Lweblogic.utils.classloaders.GenericClassLoader;Lweblogic.j2ee.J2EEApplicationContainer$Component;Z)V(J2EEApplicationContainer.java:3101) at weblogic.j2ee.J2EEApplicationContainer.prepareModules([Lweblogic.j2ee.J2EEApplicationContainer$Component;Ljava.lang.String;Z)V(J2EEApplicationContainer.java:1560) at weblogic.j2ee.J2EEApplicationContainer.prepare([Lweblogic.j2ee.J2EEApplicationContainer$Component;[Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)V(J2EEApplicationContainer.java:1208) at weblogic.j2ee.J2EEApplicationContainer.prepare(Ljava.lang.String;[Lweblogic.management.configuration.ComponentMBean;[Ljava.lang.String;)V(J2EEApplicationContainer.java:1051) at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareContainer()V(SlaveDeployer.java:2444) at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer()Z(SlaveDeployer.java:2394) at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare()V(SlaveDeployer.java:2310) at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(Lweblogic.management.deploy.OamVersion;Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;Z)V(SlaveDeployer.java:866) at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(Lweblogic.management.deploy.OamDelta;Lweblogic.management.deploy.OamVersion;ZLjava.lang.StringBuffer;)Z(SlaveDeployer.java:594) at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(Ljava.util.ArrayList;Z)V(SlaveDeployer.java:508) at weblogic.drs.internal.SlaveCallbackHandler$1.execute(Lweblogic.kernel.ExecuteThread;)V(SlaveCallbackHandler.java:25) at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178) at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
    [Deployer:149033]preparing application CMP on ejb
    [Deployer:149033]failed application CMP on ejb
    [Deployer:149034]An exception occurred for task [Deployer:149026]Deploy application CMP on ejb.: Exception:weblogic.management.ApplicationException: prepare failed for CMP Module: CMP Error: Exception preparing module: EJBModule(CMP,status=NEW) Unable to deploy EJB: C:\bea\user_projects\domains\Testdomain\applications\CMP.jar from CMP.jar: weblogic.ejb20.deployer.DeploymentDescriptorException: Unable to load a class specified in your ejb-jar.xml: pack.sams.ItemBean at weblogic.ejb20.deployer.MBeanDeploymentInfoImpl.initializeBeanInfos(Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Lweblogic.utils.classloaders.GenericClassLoader;)V(MBeanDeploymentInfoImpl.java:550) at weblogic.ejb20.deployer.MBeanDeploymentInfoImpl.<init>(Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Lweblogic.utils.classloaders.GenericClassLoader;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Lweblogic.utils.jars.VirtualJarFile;)V(MBeanDeploymentInfoImpl.java:232) at weblogic.ejb20.deployer.EJBDeployer.prepare(Lweblogic.utils.jars.VirtualJarFile;Ljava.lang.ClassLoader;Lweblogic.management.descriptors.toplevel.EJBDescriptorMBean;Ljavax.naming.Context;Ljava.util.Map;)V(EJBDeployer.java:1302) at weblogic.ejb20.deployer.EJBModule.prepare(Ljava.lang.ClassLoader;)V(EJBModule.java:498) at weblogic.j2ee.J2EEApplicationContainer.prepareModule(Lweblogic.utils.classloaders.GenericClassLoader;Lweblogic.j2ee.J2EEApplicationContainer$Component;Z)V(J2EEApplicationContainer.java:3101) at weblogic.j2ee.J2EEApplicationContainer.prepareModules([Lweblogic.j2ee.J2EEApplicationContainer$Component;Ljava.lang.String;Z)V(J2EEApplicationContainer.java:1560) at weblogic.j2ee.J2EEApplicationContainer.prepare([Lweblogic.j2ee.J2EEApplicationContainer$Component;[Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)V(J2EEApplicationContainer.java:1208) at weblogic.j2ee.J2EEApplicationContainer.prepare(Ljava.lang.String;[Lweblogic.management.configuration.ComponentMBean;[Ljava.lang.String;)V(J2EEApplicationContainer.java:1051) at weblogic.management.deploy.slave.SlaveDeployer$ComponentActivateTask.prepareContainer()V(SlaveDeployer.java:2444) at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.createContainer()Z(SlaveDeployer.java:2394) at weblogic.management.deploy.slave.SlaveDeployer$ActivateTask.prepare()V(SlaveDeployer.java:2310) at weblogic.management.deploy.slave.SlaveDeployer.processPrepareTask(Lweblogic.management.deploy.OamVersion;Lweblogic.management.runtime.DeploymentTaskRuntimeMBean;Z)V(SlaveDeployer.java:866) at weblogic.management.deploy.slave.SlaveDeployer.prepareDelta(Lweblogic.management.deploy.OamDelta;Lweblogic.management.deploy.OamVersion;ZLjava.lang.StringBuffer;)Z(SlaveDeployer.java:594) at weblogic.management.deploy.slave.SlaveDeployer.prepareUpdate(Ljava.util.ArrayList;Z)V(SlaveDeployer.java:508) at weblogic.drs.internal.SlaveCallbackHandler$1.execute(Lweblogic.kernel.ExecuteThread;)V(SlaveCallbackHandler.java:25) at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:219) at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178) at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source) .
    Please suggest a solution to this error.
    Note that the class specified in the error is in its package. So this doesn't seems to be exact error. Please suggest.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Hi,
    I have faced same problem most of time and resolved ot by recompileing my all the classes and new deployment descriptors. First you should make new java files for all clases(copy contents fron old java files ) and make anew package same as old and then do all the required process and re deploy it. I think because of some problem in class generation.

  • Ejb-jar.xml not using fully qualified class names

    HI,
    I am trying yo upgrade my application from weblogic 8.1 to weblogic 9.2.3. My application has both session and enitybeans. I updated weblogic related jars with 9.x version. But while running ejbgen, i am getting the following exception.
    *[java] weblogic.ejb.container.deployer.DeploymentDescriptorException: Unable to set the transaction attribute for method 'updateService(abcTO)' on EJB 'AbcService'. No matching method could be found. Please verify the method signature specified in the ejb-jar.xml file matches that of your Local interface for this EJB.*
    In ejb-jar.xml file, it is not creating the fully qualified class name for abcTo in <method-param>. In component interface, the method signature is not contaning fully qualified class name for the parameters and return values.
    If i change the signature in the bean with the fully qualified class name of the parameter, the ejb-jar.xml file is creating fine. But there are 100's of signatures i need to change if this is the only solution.
    Can you please advice what i need to change when i upgrade from weblogic 8 to 9 series from session and entity bean's point of view?
    Thanks in Advance
    Naveen.
    Edited by: avn_venki on Mar 16, 2009 7:15 AM
    Edited by: avn_venki on Mar 16, 2009 7:15 AM

    ejb-jar.xml has always required fully-qualified class names. If some vendors have accepted unqualified class names unfortunately that
    behavior is non-portable. Your best bet is to fully-qualify the names. Perhaps you can find some tools to help you given the large
    number of components in your application.

  • Ejb jar - packaging utility jars or classes?

    Currently I have an ejb jar that contains 1 bean (say ejb1.jar). This bean uses some utility classes (say util.jar). If I add the actuall .class files from util.jar to ejb1.jar everything works great. If I add util.jar to ejb1.jar I get errors like:
    Unable to deploy EJB: SomeBean from ejb1.jar.jar:
    java.lang.NoClassDefFoundError: com/xxxx/xxxx/SomeClass
    Shouldn't adding the util.jar file directly to the ejb1.jar file work? Do I have to do anything extra to get it to work?
    thanks,
    ryan

    http://edocs.bea.com/wls/docs70/programming/classloading.html#1069420
    "Ryan Van Luttikhuisen" <[email protected]> wrote in message
    news:[email protected]..
    Currently I have an ejb jar that contains 1 bean (say ejb1.jar). Thisbean uses some utility classes (say util.jar). If I add the actuall .class
    files from util.jar to ejb1.jar everything works great. If I add util.jar
    to ejb1.jar I get errors like:
    >
    Unable to deploy EJB: SomeBean from ejb1.jar.jar:
    java.lang.NoClassDefFoundError: com/xxxx/xxxx/SomeClass
    Shouldn't adding the util.jar file directly to the ejb1.jar file work? DoI have to do anything extra to get it to work?
    >
    thanks,
    ryan--
    Dimitri

  • How to config IAS NOT TO extract classes of ejb jar

    We are deploying an application in .ear file. I noticed that IAS always
    extracts our ejb jar into flat classes under APPS dir. Is there a way to
    instruct IAS to use the jar instead of extracting it into classes 'cuase we
    sign our jar and our classes check the signature. It won't work if IAS
    deploys it into classes.
    Thanks

    Which SP of iAS6 are you using?
    In SP1b iAS loads the extracted classes of the ejb first, but if they do
    not exist, it will try to load it from the jar file instead.
    Xiaolong Hao wrote:
    >
    We are deploying an application in .ear file. I noticed that IAS always
    extracts our ejb jar into flat classes under APPS dir. Is there a way to
    instruct IAS to use the jar instead of extracting it into classes 'cuase we
    sign our jar and our classes check the signature. It won't work if IAS
    deploys it into classes.
    Thanks--
    Han-Dat Luc ([email protected])
    Senior Consultant
    SUN Professional Services (SUNPS)
    iPlanet e-commerce Solutions
    Sun Microsystems Australia Pty Ltd

  • Two 3rd party jars share common class, signed differently

    hi,
    i have struck a problem where a SecurityException is thrown because two third party jars that are signed contain a class common to a package.
    Jar A:
    com.sun.xml.util.XmlChars
    Jar B:
    com.sun.xml.util.XmlChars
    com.sun.xml.util.MessageCatalog
    com.sun.xml.util.SomethingSomething
    I can't touch Jar A, but Jar B can be edited. Since the security granularity seems to be a package level according to the error message, deleting XmlChars from Jar B doesn't work since both jars still contain classes from the same package.
    Jar B does need the MessageCatalog so I can't remove it. I can only think of two options from here
    1) find a Jar signed by the A people (JAXB) that contains the extra classes
    2) some clever trick with classloaders - but I'm not sure what the issues are here..
    any help would be deeply appreciated,
    thanks,
    asjf

    2) some clever trick with classloaders - but I'm not sure what the issues are here..well, just loading class B and its associates in a new classloader is allowing this to work. I think this is safe too. Would be interested if anyone knows more about this area - eg. what if B needed to access something in A or vice versa, or both ways simultaneously?
    thanks,
    asjf

  • Common lookup for datasource name in ejb-jar.xml for all EJB's??

    I used <env-entry>...</env-entry> in ejb-jar.xml ...but that does not allow me to look the same entry in another EJB ...what is the right place to keep and look for such a information ?
    EJBing recently !!
    Thanks
    Ajay

    I am sorry friend, that is not what i am looking for.
    I have datasource/connection pool and do not want to hardcode the name into all EJB's rather want to access it from xml file. If i use
    <env-entry> that is for a perticular session or entity bean. and i have to write that for all 35 beans. I believe there shoule be a tag to access globaly.
    thanks for considering me to reply.
    Ajay

  • Problem accessing Application Ejb Jar files from Apache Axis jars

    I have deployed an EAR application, with a structure as shown below,
    MyApp.ear
    |____ MyApp_Ejb.jar
    |____ axis.war
    |_____ WEB-INF
    |_____ lib (This contains all axis specific jars)
    The application deploys just fine. But when i goto happyaxis.jsp and try to view all the web services that have been deployed. I get an exception "No provider type matches QName '{http://xml.apache.org/axis/wsdd/providers/java}SDL".
    Here SDL is a custom provider that i have written and all the required files for the provider are available in MyApp_Ejb.jar.
    I do not get as to why the axis.jar is not able to find classes in MyApp_Ejb.ear, when both these are in the same ear.
    Now i know i can add a utility jar to a war files classpath by adding a classpath line in the War file MANIFEST.MF. But since MyApp_Ejb.jar is defined as a Web Module this solution too doesnt help.
    Separating the provider related files from MyApp_Ejb.jar is not possible since there is too much dependance of other files within that jar.
    So i am looking for a solution where in i can continue to have MyApp_Ejb.jar as my ejb module as well as the axis related jars can find the required classes within MyApp_Ejb.jar. some way of sharing the ejb jar across to axis jars.
    Thanks in advance.
    Vicky

    I have deployed an EAR application, with a structure as shown below,
    MyApp.ear
    |____ MyApp_Ejb.jar
    |____ axis.war
    |_____ WEB-INF
    |_____ lib (This contains all axis specific jars)
    The application deploys just fine. But when i goto happyaxis.jsp and try to view all the web services that have been deployed. I get an exception "No provider type matches QName '{http://xml.apache.org/axis/wsdd/providers/java}SDL".
    Here SDL is a custom provider that i have written and all the required files for the provider are available in MyApp_Ejb.jar.
    I do not get as to why the axis.jar is not able to find classes in MyApp_Ejb.ear, when both these are in the same ear.
    Now i know i can add a utility jar to a war files classpath by adding a classpath line in the War file MANIFEST.MF. But since MyApp_Ejb.jar is defined as a Web Module this solution too doesnt help.
    Separating the provider related files from MyApp_Ejb.jar is not possible since there is too much dependance of other files within that jar.
    So i am looking for a solution where in i can continue to have MyApp_Ejb.jar as my ejb module as well as the axis related jars can find the required classes within MyApp_Ejb.jar. some way of sharing the ejb jar across to axis jars.
    Thanks in advance.
    Vicky

  • Weblogic 10.3.0 Deployment error when using ejb-jar.xml

    Hi,
    I am getting the following error while deploying my EJB3 application on Weblogic 10.3.0. This is happening only if I include ejb-jar.xml.
    As per the EJB3 descriptor spec, Remote Home or Local home are not exists.
    Is this a issue in Weblogic 10.3.0 or am I missing any special setup ?
    Please help.
    weblogic.application.ModuleException: Exception preparing module: EJBModule(egm-poc.jar)
    Unable to deploy EJB: C:\appsrv\domains\WeblogicRS1.1-domain\servers\admin\tmp\_WL_user\_appsdir_egmear_ear\ot2591\egm-poc.
    jar from egm-poc.jar:
    In EJB JPATestBean, both the remote home and remote component interface must be specified. Currently, only one of them is spec
    ified.
    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:452)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:58)
    My ejb-jar.xml is
    - <ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
    <description>JPA Test Application</description>
    <display-name>JPATest</display-name>
    - <enterprise-beans>
    - <session>
    <ejb-name>JPATestBean</ejb-name>
    <remote>egm.poc.jpa.JPATestBeanRemote</remote>
    <local>egm.poc.jpa.JPATestBeanLocal</local>
    <ejb-class>egm.poc.jpa.JPATestBean</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    - <session>
    <ejb-name>AuditInfoDAOH</ejb-name>
    <local>egm.poc.jpa.Audit</local>
    <ejb-class>egm.poc.jpa.AuditInfoDAOH</ejb-class>
    <session-type>Stateless</session-type>
    <transaction-type>Container</transaction-type>
    </session>
    </enterprise-beans>
    - <assembly-descriptor>
    - <container-transaction>
    - <method>
    <ejb-name>JPATestBean</ejb-name>
    <method-name>*</method-name>
    </method>
    <trans-attribute>RequiresNew</trans-attribute>
    </container-transaction>
    - <container-transaction>
    - <method>
    <ejb-name>AuditInfoDAOH</ejb-name>
    <method-name>*</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
    </container-transaction>
    </assembly-descriptor>
    </ejb-jar>
    Regards
    Saji

    Hi,
    Seems the issue is not common. Can anyone throw some light on this ?
    Regards
    Saji

  • Dependent Class files of EJBs...

    I have few dependent class files related to all EJBs (for example common exceptione). Right now all these dependent classes are duplicated in all the EJB jars. Is there any way get rid out of this duplication (other than putting in to system class path). i.e one single jar containing all dependent class files should be deployed along with the (EJBs jars - dependent calsses) in the EAR file.
    Thanx in Adv,
    Potluri

    Hi,
    you can set a classapth in the MANIFEST.MF filewith the parameter Class-Path for relative URLs

  • Deploying persistence.xml in ejb-jar componts

    Hi,
    If you are deploying ejb-jar components which are packaged independently and are remote components but they all access the same database, do you put the persistence.xml in the META-INF of each component (ejb-jar). If not, where would it go?
    I can find lots of references to having a single persistence.xml with many configurations but if (theoretically) each bean is deployed on a separate JVM/Container how would it access the persistence.xml?
    Thanks.

    If you are deploying the EJB JARs to different Java EE servers, then yes, each EJB JAR needs its own persistence.xml. You would configure each Java EE server to point to the same JDBC resource.
    If you are deploying them all to the same server, you should package the entity classes into a single JAR file, and include that JAR file in an EAR with the other EJB JARs. In that scenario, persistence.xml is in the JAR's META-INF directory. The JAR file can either be in the top-level of the EAR, or in the EAR's library directory. In this case, the scope of the persistence unit is the entire EAR.
    -ian

  • More information about the ejb-ref element of ejb-jar.xml

    Hello,
    I am currently studying ejbs and I came across the ejb-ref element of the ejb-jar.xml file. I am in reference to O'Reilly Entreprise JavaBeans book. The book says that, thanks to the ejb-ref element it is possible to access one ejb from another ejb with the following client code:
    InitialContext jndiContext = new InitialContext();
    Object ref = jndiContext.lookup("java:comp/env/ejb/ProcessPaymentHomeRemote");
    ProcessPaymentHomeRemote home = (ProcessPaymentHomeRemote) PortableRemoteObject.narrow(ref, ProcessPaymentHomeRemote.class);I thought one could invoke the above client code without the ejb-ref element being present in the ejb-jar.xml... I am right or wrong?
    Then why the need for the ejb-ref element? Can anyone give me a concrete example of usage of the ejb-ref element where the ejb-ref element really is useful? What are the advantages of using the ejb-ref element?
    Thanks in advance,
    Julien Martin.

    Hi Julien,
    The main reason is portability. It's true that in many J2EE implementations it is possible to access an EJB's Home object without going through the component context (java:comp/env), but all such approaches are NOT portable. In the J2EE programming model, all resource access is made via the private component namespace. Using this level of indirection allows the bean developer to code the application without having to know which physical resource will be used at runtime. Each J2EE implementation can use a different scheme to identity physical resources, so by sticking to logical references in your code, you guarantee portability. Finally, you have the advantage that you can change which physical resource is mapped at deployment time without having to change your code.
    So, the bottom line is, whenever you have any J2EE component (ejb, servlet, jsp, Application Client) that looks up an ejb, data source, queue, connection factory, etc., always use the environment reference type that J2EE defines for it and look it up via java:comp/env.
    --ken
    Kenneth Saks
    J2EE SDK Team
    SUN Microsystems

Maybe you are looking for