portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject [jira] Commented: (JS2-56) Objects Fail to Create with Tomcat Classloaders and cross context
Date Fri, 28 May 2004 20:08:00 GMT
The following comment has been added to this issue:

     Author: Ate Douma
    Created: Fri, 28 May 2004 1:07 PM
       Body:
David Sean Taylor wrote:
>So we would now have 3 sub-projects out of commons: 
>1. jetspeed-om (om interfaces and implementations) 
>2. jetspeed-core-pa (JS2-37) 
>3. jetspeed-commons (basically just o.a.j.util) 
+1

>Im wondering if we even need #3 ....perhaps they can be moved into #2 
Don't forget the util OJB classes which should belong in #3.
 
>Ate, regarding your patch, didn't you receive your Apache account yet? 
:( No. Still nothing...

>If so, no need to send patches, unless you just want us to test it out. 
If possible please to test it out. Its working for me but we should be sure about this.

>I prefer that we resolve the issues above before applying Ate's solution to JS2-56 (this
issue) 
+1

Also, David Le Strat commented on the list about cross posting my comments (also for Tomcat
JAASRealm) to OBJ and Tomcat lists to initiate a discussion.
I answered that I would prefer having a more direct discussion with one or more of the lead
developers of both products.
I'd like to know what you think of that (please answer on the list). If we should enter a
discussion with them maybe we should wait on that as well.
I'm -1 on waiting though.

---------------------------------------------------------------------
View this comment:
  http://issues.apache.org/jira/browse/JS2-56?page=comments#action_35786

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/JS2-56

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: JS2-56
    Summary: Objects Fail to Create with Tomcat Classloaders and cross context
       Type: Task

     Status: Open
   Priority: Major

    Project: Jetspeed 2
 Components: 
             Components Core
   Fix Fors:
             2.0-dev/cvs
   Versions:
             2.0-a1

   Assignee: David Sean Taylor
   Reporter: David Sean Taylor

    Created: Tue, 25 May 2004 9:35 PM
    Updated: Fri, 28 May 2004 1:07 PM
Environment: Tomcat 4 and 5

Description:
J2 uses a cross-context class loader to share objects created in the jetspeed context with
other portlet application contexts. This works fine when objects have already been instantiated
in the jetspeed context. 

J2 infuses a common servlet into every portlet application that is deployed into a Tomcat
application server via the J2 portal's PAM (Portlet Application Manager). The code that runs
in this servlet is placed in Tomcat's shared/lib directory so that both Jetspeed common servlet
and the Jetspeed portal can share objects. 

The problems I am seeing with this approach are rooting in the creation of new objects. For
example, if a portlet application, such as the HW_App, has a portlet UserInfo, that requires
creation of preference objects. Preference objects by OJB. Looking at the code used by the
ojb object broker

http://cvs.apache.org/viewcvs.cgi/db-ojb/src/java/org/apache/ojb/broker/util/ConstructorHelper.java

you see object creation taking place as:

  result = constructor.newInstance(NO_ARGS);

And this code fails, class not found exception. It fails to find the object to be created,
such as a NodeImpl, which is deployed in the Prefs jar, normally stored under jetspeed's WEB-INF/lib
directory. This tells me that the classloader being used by the code above is not the same
as the cross-context classloader in Tomcat...or...the Tomcat cross-context class loader is
not designed to handle this kind of object construction.

I think we have several directions we can take for a solution
One experiment I tried with Tomcat 4.1.30, was:

1. move every jar out of WEB-INF/lib into shared/lib
2. delete all classes under WEB-INF/classes
3. copy jetspeed-2.0-a1.jar into shared/lib
4. move the JDBC driver into Tomcat's system directory or into the classpath

This seemed to work, although for some reason I could not login to the LoginPortlet tonight.
Not sure if its related. The solution is simple here: move everything down into shared/lib.


A second solution would be to replace Tomcat's cross-context class loader with our own.
Although I have not found a 'pluggable' way to do this.

A third solution would be to modify the classloader in the Jetspeed common servlet.
I have started some testing in this area without any success (yet):

http://cvs.apache.org/viewcvs.cgi/jakarta-jetspeed-2/commons/src/java/org/apache/jetspeed/container/JetspeedContainerServlet.java

see the infuseClasspath method







---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org


Mime
View raw message