No EJBs found in the ejb-jar file 'MyApplication.jar'. Please ensure the ejb-jar contains EJB declarations via an ejb-jar.xml deployment descriptor or at least one class annotated with t he @Stateless

Hello all,

I've banging my head for the past day to migrate a Seam web application from JBoss 5.0 to WebLogic 10.3 server. I have followed the instructions here: http://docs.jboss.org/seam/2.0.2.SP1/reference/en-US/html/weblogic.html and I have set up everything that needs to be set up (datasources, jms queues etc) but when I deploy the .ear file on WebLogic I get the following error

<29 -¿¿ 2010 4:34:51 ¿¿ EET> <Error> <Deployer> <BEA-149205> <Failed to initialize the application 'myapplication-ear' due to error weblogic.application.ModuleException: Exception preparing module
: EJBModule(MyApplication.jar)
[EJB:011023]An error occurred while reading the deployment descriptor. The error was:
No EJBs found in the ejb-jar file 'MyApplication.jar'. Please ensure the ejb-jar contains EJB declarations via an ejb-jar.xml deployment descriptor or at least one class annotated with t
he @Stateless, @Stateful or @MessageDriven EJB annotation...
weblogic.application.ModuleException: Exception preparing module: EJBModule(MyApplication.jar)
[EJB:011023]An error occurred while reading the deployment descriptor. The error was:
No EJBs found in the ejb-jar file 'MyApplication.jar'. Please ensure the ejb-jar contains EJB declarations via an ejb-jar.xml deployment descriptor or at least one class annotated with t
he @Stateless, @Stateful or @MessageDriven EJB annotation..
at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:467)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:507)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:149)
Truncated. see log file for complete stacktrace

Caused By: java.io.IOException: No EJBs found in the ejb-jar file 'MyApplication.jar'. Please ensure the ejb-jar contains EJB declarations via an ejb-jar.xml deployment descriptor or at l
east one class annotated with the @Stateless, @Stateful or @MessageDriven EJB annotation.
at weblogic.ejb.container.dd.xml.EjbDescriptorReaderImpl.createReadOnlyDescriptorFromJarFile(EjbDescriptorReaderImpl.java:219)
at weblogic.ejb.spi.EjbDescriptorFactory.createReadOnlyDescriptorFromJarFile(EjbDescriptorFactory.java:93)
at weblogic.ejb.container.deployer.EJBModule.loadEJBDescriptor(EJBModule.java:1242)
at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:395)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
Truncated. see log file for complete stacktrace

It seems that WebLogic does not like our model project (MyApplication.jar) which is a bunch of classes with @Entity and @Table annotations and an interceptor defined in the ejb-jar.xml (shown below) to handle these classes.

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar 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"
version="3.0">

<interceptors>
<interceptor>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor>
</interceptors>

<assembly-descriptor>
<interceptor-binding>
<ejb-name>*</ejb-name>
<interceptor-class>org.jboss.seam.ejb.SeamInterceptor</interceptor-class>
</interceptor-binding>
</assembly-descriptor>

</ejb-jar>

Any thoughts on what's going wrong? I'd appreciate any help I can get.

Regards

Panos
LVL 35
girionisAsked:
Who is Participating?
 
ramazanyichConnect With a Mentor Commented:
I think the reference which you used is a little bit outdated as it is written for weblogic 10.0MP and you are trying to migrate to weblogic 10.3
I suggest you better check updated doc for installation of seam on weblogic 10.3 at http://docs.jboss.org/seam/2.1.2/reference/en-US/html/weblogic.html#weblogic-ejb-issues
0
 
girionisAuthor Commented:
Hello ramazanyich, thanks for your reply. I have already seen this link, I have tried all the suggestions there but still no luck. I really think it's a classpath issue since my @Entity beans should be picked up by the Seam Interceptor, just like it happens with JBoss. But I am stumped as to why they are not picked up. I am pretty sure I am loading all the Seam components since if I remove the seam jars from the classpath I am getting the ClassNotFound exceptions everywhere.

Any more thoughts?
0
 
ramazanyichConnect With a Mentor Commented:
maybe it doesn't like the <ejb-name>*</...
because in all examples all ejb-names are listed one-by-one...
Do you have your seam beans with @Statefull annotation?
0
The Firewall Audit Checklist

Preparing for a firewall audit today is almost impossible.
AlgoSec, together with some of the largest global organizations and auditors, has created a checklist to follow when preparing for your firewall audit. Simplify risk mitigation while staying compliant all of the time!

 
girionisAuthor Commented:
I have tried to list the ejbs one by one in the <ejb-name> but I am still getting the same error.

> Do you have your seam beans with @Statefull annotation?

No. I am using Seam's @Name annotation on POJOs which should be picked up by Seam as EJB components. This is why I think that seam might not be loaded correctly.

Currently I am running the application by changing the <ejb> element in the <module> (in application.xml) to "java" instead of "ejb".
0
 
ramazanyichCommented:
seems like that causes the weblogic to fail. It expets some EJBs if you provide ejb-jar xml file
0
 
girionisAuthor Commented:
After much research I came to the conclusion that this is a WebLogic-specific issue, since both JBoss and Websphere do not exhibit the same behaviour. And after reading the seam specification I also found out that the @Name attribute does not create EJBs, just POJOs.

To anyone interested I had to add a dummy @Stateless bean in my project in order to make this work for WebLogic. I din't change the <ejb-name>*</... at all.

I will assign the points to ramazanyich for having helping me with the link he provided. Thanks again.
0
 
girionisAuthor Commented:
> seems like that causes the weblogic to fail. It expets some EJBs if you provide ejb-jar xml file

Yes it does. But the *exact* same jar file works fone on JBoss and Websphere, so I guess it's a WebLogic specific issue (maybe a bug?). Anyway, the solution was to (as I said in my previous comment) to provide a dummy Stateless session bean and now it works fine.

Thanks again for your help.

Regards
0
All Courses

From novice to tech pro — start learning today.