This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Websphere and the fly likes EARs, logging and dependant jar files Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Products » Websphere
Bookmark "EARs, logging and dependant jar files" Watch "EARs, logging and dependant jar files" New topic
Author

EARs, logging and dependant jar files

David Edds
Greenhorn

Joined: Dec 06, 2004
Posts: 20
Hi,

I have a question regarding EJBs, EARs and dependant resources in WSAD 5.1. It seems when deploying EARs, sometimes I can have an EJB WSAD project reference a jar file and it deploys ok, but in one particular case I have the bean reference a jar file and it will not deploy.

This is my situation:

I have an WSAD EJB project called MyEJBProject. This has a dependency on a very simple jar file of my own creation, called aaa.jar. By adding aaa.jar to the build path of MyEJBProject, I can compile MyEJBProject without error, add it to my EAR project and can deploy and run it succesfully. (Note: I am assuming that becuase MyEJBProject has a dependancy on aaa.jar, then aaa.jar is added to the ear and deployed.)

I now want to add Logging support to MyEJBProject, so I add a reference in MYEJBProject's build path to log4j-1.2.4.jar (a jar shipped with WSAD 5.1). I can now add logging support to MyEJBProject, but when I try to deploy the EAR, I get a ClassNotFound exception.

However, if instead of adding the jar to MyEJBProject, I add the jar to the EARProject and I place a dependancy in MyEJBProject to that jar, then it works and can be deployed succesfully. This allows me to continue working, although I am not entirely happy as it raises the following questions:

Why does one method work for aaa.jar and not for log4j-1.2.4.jar?

Should all of my dependant jar files be placed in the EAR? Is this the way I should be coding? My overall project consists of many WSAD Projects with lots of dependant jars. It seems strange to just lump everything into the EAR and work from that.

Any help anyone can shed on any of this will be greatly appreciated.
Thanks,
David
Murtuza Akhtari
Ranch Hand

Joined: Aug 07, 2004
Posts: 108
When you placed your log4j.jar in the MyEJBProject, did you try to use the logging in any classes outside the MyEJBProject, like for eg. in any servlet/filter/class residing in the MyWEBProject??

as long as you have ur log4j.jar in any project , u can use logging only within that project. If you want application level use of a particular jar, then you have to place it in the EAR

HTH
[ December 17, 2004: Message edited by: Murtuza Akhtari ]

---<br />SCJP 1.4
David Edds
Greenhorn

Joined: Dec 06, 2004
Posts: 20

When you placed your log4j.jar in the MyEJBProject, did you try to use the logging in any classes outside the MyEJBProject, like for eg. in any servlet/filter/class residing in the MyWEBProject??


No I didn't. I would not have been able to get the classes to compile anyway, if the jar was not available.


as long as you have ur log4j.jar in any project , u can use logging only within that project. If you want application level use of a particular jar, then you have to place it in the EAR


Like I say, the jar fails on deployment with logging, when logging is used in MyEJBProject - where the logging jar is declared! Logging is not used in any other WSAD Project.

"Application level use" is an interesting phrase that you use, and a phrase that I am unfamiliar with. What exactly does it mean? However, since I can get the aaa.jar file to work and not the logging jar, I suspect that there is something special about the logging jar or logging in general.

Thanks,
David
David Edds
Greenhorn

Joined: Dec 06, 2004
Posts: 20
Hmmmm....

I believe my problem is a class-path one! WSAD comes bundled with its own Logger (JRAS). So I'm guessing that the JRAS logger is being referenced before my log4j logger.

Although I am explicitly declaring my Logger as "org.apache.log4j.Logger" it's the failure to find the "Category" class that is the problem...

Although that should be on the classpath (within the log4j jar file)!!!
emm raha
Ranch Hand

Joined: Mar 18, 2003
Posts: 57
David -

How are you creating a dependency on aaa.jar? Do you (1) add it to the 'Java Build Path' (2) add it to the 'Java JAR Dependencies' (3) add it to the 'Web Library Projects' (4) all of the above?

All -

I have a utility 'Java Project' which I would like to jar and use in a couple of of 'Web Project's. I've added it to the Web Projects' 'Web Library Projects', and everything builds/runs fine in WSAD. I'm not sure how to export these projects to WAS.

I could bundle up my n Web Projects and 1 Java Project in a EAR and deploy that. However, if multiple developers are working on projects dependent on that 1 Java utility jar, we would have to coordinate our EAR deployment, which is annoying during iterative development/qa cycles.

We're also using Log4J for logging. We added log4j-1.2.8.jar to the 'Java Build Path' of our Web Projects. However, we found that if multiple Web Projects used Log4J, the configs of the one loaded first by WAS was used by all the other projects.

Finally, I believe Murtaza's term "application level use" means all the projects within an EAR.
 
Don't get me started about those stupid light bulbs.
 
subject: EARs, logging and dependant jar files
 
Similar Threads
Enterprise application setup on WSAD
A Qurey Regd Deployment of Struts 1.1 Based Application on WebSphere 5.1
Third party libraries and WSAD 5.1.0
jars within jars
Log4j error while deploying EJB 3.0 in weblogic 10