Thanks for your advices...

Sure, the first configuration I tried was to put struts jars in each
.war/WEB-INF/lib.

For those interested, a good link on classloaders : 
https://glassfish.dev.java.net/nonav/javaee5/docs/DG/beade.html

But it doesn't work with Glassfish in this configuration because of xwork as 
I've already
pointed out :

--------------------------------------------------------------
[#|2008-06-12T11:22:06.192+0200|SEVERE|sun-appserver9.1|javax.enterprise.system.container.web|_ThreadID=20;_ThreadName=httpWorkerThread-4848-0;_RequestID=48141413-1d12-4d21-918f-3950921f55ab;|WebModule[/ProjectB]PWC1270:
Exception starting filter Struts2
Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory - bean - 
jar:file:/Users/hugo/local/glassfish/domains/dev/applications/j2ee-apps/AgaVision/ProjectB_war/WEB-INF/lib/struts2-core-2.0.11.1.jar!/struts-default.xml:30:72

.... skipped stackTrace ....

Caused by: Bean type class com.opensymphony.xwork2.ObjectFactory with the name 
xwork has already been loaded by bean -
jar:file:/Users/hugo/local/glassfish/domains/dev/applications/j2ee-apps/AgaVision/ProjectA_war/WEB-INF/lib/struts2-core-2.0.11.1.jar!/struts-default.xml:30:72
- bean -
jar:file:/Users/hugo/local/glassfish/domains/dev/applications/j2ee-apps/AgaVision/ProjectB_war/WEB-INF/lib/struts2-core-2.0.11.1.jar!/struts-default.xml:30:72
--------------------------------------------------------------

It seems there are problems like this as stated in this interesting
forum entry : http://forums.java.net/jive/thread.jspa?messageID=260375

But I tried both class loader configuration in sun-web.xml descriptors  with 
the same result (see
stacktrace above).

-------------------------------------------
Default sun-web.xml : 
<class-loader delegate="true"/>

Modified sun-web.xml :
<class-loader delegate="false"/>
This configuration use firstly the childs classloaders before to
delegate.
-------------------------------------------

Tips :
- I've searched for other remaining struts jars but have not found any.
- I deploy directly from Eclipse, or export the ear from Eclipse and
  deploy it manually (Only 2 xwork references in the ear : 1 in each
  .war/WEB-INF/lib)   

I'm stuck with only one struts project by application for now...

On Wed, Jun 11, 2008 at 03:12:07PM +0200, Marc Ende wrote:
> In general it isn't a good idea to put those custom libs (like 
> struts.jar, spring.jar) etc. in classloaders of the main
> appserver. They should be in the applications-classloader so you can 
> avoid classloader-issues like leaks.
> 
> If you've got the first error it sounds to me that you've got the xwork 
> libs on ear level. If it's in web-inf/lib it shouldn't "see"
> each other. The classloaders _should_ be seperated. I'm not sure if 
> glassfish handles it correctly but I would think so.
> May be you've got another xwork.jar somewhere else, which is loaded at 
> first (such thing can happen if you build using maven and forgets to run 
> a clean before final build.)
> 
> If you've got two identically xwork.jars (or struts.jars) in the 
> classpath or in parent classpaths they will be considered as two
> different types/versions. So I would think that you'll have a xwork.jar 
> somewhere in your parent classpath.
> 
> The second error occures if the loaded classes from lib/ext didn't find 
> the dependent classes within the current and in one of the parent 
> classloaders (up to the bootclassloader). If the javax.servlet.Filter is 
> loaded by a seperate classloader (which might be a child of the 
> classloader (which loads the classes from lib/ext) it wouldn't  be found 
> by the lib/ext classes.
> 
> 
> Hugo de Paix de Coeur schrieb:
> >In fact, this was my second question, so I ask it now :)
> >
> >I have had problems with deploying *struts*.jar in this special
> >configuration (2 war in an ear).
> >- I tries to put them in each .war WEB-INF/lib
> >  => "Error : xwork...ObjectFactory already loaded in bean projectA" at 
> >  projectB deployment.
> >- I tries to put them in glassfish domain lib/ext
> >  => "Error : ClassLoader : Can't find javax.servlet.Filter"
> >
> >So, they are for now in the glassfish "main" lib.. but there are
> >problems too .. at runtime.
> >
> >What is the correct installation scheme for struts.jar with this
> >configuration ?
> >
> >Thx...
> >
> >On Wed, Jun 11, 2008 at 02:31:13PM +0200, Marc Ende wrote:
> >  
> >>Hello,
> >>
> >>do you deploy the struts.jar in the ear or in the WEB-INF/lib folders of 
> >>the war-files?
> >>if they're in the WEB-INF/lib folders they should be seperate.
> >>
> >>Marc
> >>
> >>
> >>Hugo de Paix de Coeur schrieb:
> >>    
> >>>Hello,
> >>>
> >>>I'm currently trying to deploy two Struts2 enabled .war in a single
> >>>.ear on Glassfish.
> >>>
> >>>My problem is : I've no isolation between the 2 projects at the action
> >>>dispatcher level.
> >>>
> >>>----------------------------
> >>>Project A WAR struts.xml : 
> >>>
> >>><struts>
> >>><package name="projectA-support" namespace="/" extends="struts2-default">
> >>>
> >>>   <action name="Index" class="com.web.projectA.Index">
> >>>           <result>/jsp/index.jsp</result>
> >>>   </action>
> >>>                                                           
> >>></package>
> >>>
> >>>Project B WAR struts.xml : 
> >>>
> >>><struts>
> >>><package name="projectB-support" namespace="/" extends="struts2-default">
> >>>
> >>>   <action name="Index" class="com.web.projectB.Index">
> >>>           <result>/jsp/index.jsp</result>
> >>>   </action>
> >>>                                                           
> >>>   <action name="Login" class="com.web.projectB.Login">
> >>>           <result>/jsp/login.jsp</result>
> >>>   </action>
> >>>                                                           
> >>></package>
> >>>
> >>>----------------------------
> >>>
> >>>1- I can call 'http://localhost:8080/ProjectA/Login.action' and this is 
> >>>the 'com.web.projectB.Login' class that is executed (even if no Login 
> >>>action is specified in Project A) because they share the namespace '/'.
> >>>
> >>>2- If I call 'http://localhost:8080/ProjectA/Index.action', this is the 
> >>>'com.web.projectB.Index' class that is executed (last struts.xml to be 
> >>>parsed ?)
> >>>
> >>>I've no clues to resolve this problem (the use of different namespaces 
> >>>doesn't resolve the problem either)
> >>>Any idea ?
> >>>
> >>> 
> >>>      
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>    
> >
> >  
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

-- 
Hugo de Paix de Coeur [Kabhal] <hugo[AT]kab[NOSPAM]hal.org>
Contacts: http://www.kabhal.org/~hugo

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to