• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

EJB interfaces not found by client classes

 
Lasse Koskela
author
Sheriff
Posts: 11962
5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm having a problem with WebLogic 6.1 and EJB interfaces not being found.
I need to be able to hot/redeploy EJBs without restarting WebLogic and, of course, use the EJBs from client classes within a web application.
The problem is that if I place the home and remote interfaces only to the EJB .jar file, the client classes are throwing ClassNotFoundExceptions. Then again, if I copy the interfaces to the web applications lib directory (included automatically in classpath upon startup), WebLogic says "MyEJB cannot be redeployed while the server is running (which I assume is due to the possibility that the interfaces in mywebapp/lib and myejb.jar become out of sync)...
So, any ideas? Every one of them are highly appreciated!
 
Dave Landers
Ranch Hand
Posts: 401
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
My preference is to package the EJB and WebApp in a J2EE Application (ear). Then the webapp will have access to the ejb and you won't have to mess around with client jars in WEB-INF/lib etc.
In WLS, you don't have to deploy the ear as a jar, you can deploy it as an "exploded" directory - like you probably do with your webapp. It'd look something like this:

The application.xml will have a <module> entry for the ejb jar and the webapp.
The warning message you are seeing is sometimes harmless - it means that WLS found some ejb classes outside the ejb-jar when the ejb was deployed. So it warns you that you might not be able to redeploy the ejb. As long as your ejb classes are not in the CLASSPATH when you started the server, you should be fine. But I still prefer using the application packaging.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic