[jboss-user] [EJB 3.0] - Re: Single persistence.xml file with multiple EJB jars

enazareno do-not-reply at jboss.com
Thu May 8 06:24:35 EDT 2008


Hi DeanoUK,

     I have the same problem as yours and I've looked for 2 days with no concrete answer. My structure is quite like yours - I have several ejb jars (without the persistence.xml ) registered in an ear and I have an extra mypu.jar which does not contain the entity classes - only the persistence.xml. Why is this as such? I have a large project with several ejb modules and some are re-usable entities which must be packaged separately. I must share a persistence.xml because  entities from one module depend on the reusable classes - I cannot have several persistence.xml in each entity's jars. I must register the ejb jars under the ear because there is no other way for it to be accessed remotely this way - "earname/MyService/remote".  This is fine and it works. The problem is my entities are inside the entity jars and I cannot scan it using the jar-file syntax as pointed :
     

  |        <jar-file>../myjar.jar</jar-file>
  | 

    Why? Because this is only true if the entity classes are under mypu.jar but - it is outside this jar. If you omit the "../" the jar files must be located in the bin directory. I have several solutions to workaround this:  

     1. In the jar-file, really specify the absolute path. i.e., /jbossroot/server/default/deploy/myear.ear/thejar.jar. This is not a great solution because it is not portable. Ideally it should be relative path. Unless we can specify a special url handler that points to the ear like a "resourceloc://myear.ear" for example, this might be better, or if the persistence.xml can support property substitution, this can work too like ${mypath}/jarfile.jar.   

    2. Do not use jar-file, use explicit declaration of classes. I have not tried it but I think this should work. The only problem is - I have several entities and it might be hell to register it one by one. Also, if I refactor, it might be too unwieldy.

    3. Have a separate package for entities and stateless session beans(SSB). The entities will be under mypu.jar, while the stateless session beans  will be reigstered as ejb module. On second thought, how do I access the entities from the SSB? I have not tried this path.

    4. Only mypu.jar will be registed in the ear, and all other jars under it referenced with jar-file in the persistence.xml. It deploys cleanly but the problem, like I mentioned, I cannot access the statless session beans as an ear. 

    5. All classes are exploded and packaged only in one jar. This is my current setup and the reason why I am hassling myself today for a better solution. 

    I hope there is a better way of doing this.

Cheers,

Elmo 
 






 




 


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4149381#4149381

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4149381



More information about the jboss-user mailing list