RE: [JBoss-dev] Status of ear deployment

2002-02-06 Thread marc fleury

|If JBoss is responsible for WEB-INF/lib  classes, is Jetty

what is in web-inf/lib just straight jars/wars/?  If so that is taken care
of already.

classes is the flat stuff right? classes in a flat directory.


|responsible for the
|classpath that can be set in MANIFEST.MF? Can this override lib 

I take care of ALL manifest craziness and most of it doesn't need to be set
intra war.

|classes or only
|add to them. Is the top-level of a war also searched for classes?

a war is added as a class source/page source.  So yes it is added, not
searched just plain added.

marcf

|I have seen this
|used, but never checked to see if it was explicit or implicit behaviour.
|
|Jules
|
|
|
|Greg Wilkins wrote:
|
| Sorry, but I've been away from my computer, so I have not been
|able to contribute
| to this discussion
|
| But looking over what has been said - my quick response is
|
| If WARDeployer is handling the WEB-INF/lib jars *and* the WEB-INF/classes
| directory, then I think the simplest thing to do is to switch the
| Jetty CL into J2 compliant mode (ie always delegates).
|
| This means that whatever policy is selected (Servlet compliant
|or J2 compliant)
| will be implemented in a single place within JBoss.   Jetty's
|own interpretation
| of the servlet spec and changes to it's definition of System
|class will not
| effect the running of JBoss.
|
| Actually, I'll look at changing Jetty so that it can use JBoss's
|classloader
| directly and then we don't need to bother with any delegation.
|
| But as I said, this is my quick response as I once again rush
|out the door...
| I'll read everything again late tonight and send a more
|considered response.
|
| cheers
|
| marc fleury wrote:
|  Sorry thinking some more and answering some
| 
|  |2- Jetty CLs bypass the JDK parent delegation model and do
|  |explicit creation
|  |of classes from their classloaders.  So any new class seen by Jetty is
|  |loaded by Jetty CL, delegated to JBoss CL if not found.  THIS IS SPEC
|  |COMPLIANT.  THIS COMPLETELY BREAKS THE INTEGRATION as the
|Jetty Classes
|  |would not be seen as loaded by the same classloaders as the
|JBoss classes.
|  |You want to share classes? tough it out.
| 
|  Well come to think of it it only breaks integration if we are *sharing*
|  classes. Duplicate classes in /webinf/classes and some other
|package (EJB or
|  another servlet) would not be seen.
| 
|  The proper way to do integration (classes seen by this ear/war
|and other
|  classes) is to move the classes out of there.  So in fact having Jetty
|  implement the spec and look for classes locally and then
|delegate to JBoss
|  would only break integration in case the user duplicates
|classes in their
|  packages and is looking for sharing. This looks OK.
| 
|  |3- I code WARDeployer parsing of the webinf/classes (simple),
|we can code a
|  |fancy granularity if need be (scott's point) but priority is to
|  |integration and ease of use.  Never breaks, can be made spec
|  |compliant. This
|  |is transparent to Jetty (bypasses its management of web-inf/classes)
| 
|  This is really my favorite now.  I am working on the
|assumption that dave is
|  not full of shit and that this package was indeed working
|before, this means
|  that we were parsing the webinf/classes in OUR deployer already, unless
|  jetty was implementing a 2/ solution before which it wasn't.
| 
|  Greg, note that if I implement 3 right now and you implement 2
|your 2 will
|  override 3 (you will find the class in the 2 step and not go
|with the UCL
|  from 3/ therefore have exactly the same effect).  In other
|words you are
|  free to implement your spec compliance and do away with parent
|delegation as
|  requested by the spec (which is dumb imsho) with the knowledge and
|  understanding that
|  1- this is irrelevant to the case standalone or not it only
|comes into play
|  if you have a CL to delegate to (JBoss parent in this case).
|  2- it will only break integration of shared classes. But that
|is the spec
|  for you.
| 
|  I think I have reached a conclusion on my part.
|  a/ I will go ahead with 3/
|  b/ you can override by implementing your JettyCL that do servlet spec
|  compliance on ordering  but if you don't and just delegate as
|is, we have
|  integration.
| 
|  And thus speed.
| 
|  Anything for speed.
| 
| 
|  |4- The user stop bothering us with more packaging non-sense
|from SUN, puts
| 
|  this is un-realistic :)
| 
|  |5- Apache developers get their shit together
| 
|  and so is this.
| 
|  marcf
| 
|  WAIT WAIT WAIT
| 
|  PS: 1/ (UCL in Jetty) would give us spec compliance AND
|integration, but I
|  would rather do the work myself... although that would be one
|place where
|  having the JBoss/Jetty codebase becomes interesting... h
|maybe this is
|  simpler even though it is really a fork from the jetty base.
| 
| 
|
| --
| Greg Wilkins[EMAIL PROTECTED]  GB  Phone: +44-(0)7092063462
| Mort Bay Consulting Australia and UK.Mbl Phone: +61-(0)4 17786631

[JBoss-dev] Status of ear deployment

2002-02-05 Thread Dave Smith

I am using the current tip (9 am this morning). This ear deployed and 
worked before (the marc unified class loading)  and now I am getting a 
class not found exception. Inside the war is

WEB-INF/classes/tests/cadex/TestCompanyInfoBean.class

and when I try to access it via a servlet I get (see below)
known problem? bug ? Dumb user?


Error finding class [tests.cadex.TestCom
panyInfoBean] in classpath
java.lang.ClassNotFoundException: tests.cadex.TestCompanyInfoBean
 at 
org.jboss.system.ServiceLibraries.loadClass(ServiceLibraries.java:405
)
 at 
org.jboss.system.UnifiedClassLoader.loadClass(UnifiedClassLoader.java
:101)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:120)
 at 
org.apache.cactus.server.AbstractTestCaller.getTestClassClass(Abstrac
tTestCaller.java:331)
 at 
org.apache.cactus.server.AbstractTestCaller.getTestClassInstance(Abst
ractTestCaller.java:302)
 at 
org.apache.cactus.server.AbstractTestCaller.doTest(AbstractTestCaller
.java:130)
 at 
org.apache.cactus.server.AbstractTestController.handleRequest(Abstrac
tTestController.java:122)
 at 
org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedi
rector.java:134)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:327
)
 at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
46)
 at org.mortbay.http.HttpContext.handle(HttpContext.java:1269)
 at org.mortbay.http.HttpContext.handle(HttpContext.java:1223)
 at org.mortbay.http.HttpServer.service(HttpServer.java:725)
 at org.mortbay.http.HttpConnection.service(HttpConnection.java:748)
 at 
org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:921)
 at org.mortbay.http.HttpConnection.handle(HttpConnection.java:763)
 at 
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
138)
 at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:287)
 at org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:715)
 at java.lang.Thread.run(Thread.java:484)



___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



Re: [JBoss-dev] Status of ear deployment

2002-02-05 Thread Scott M Stark

WEB-INF/classes should not be handled by the unified class loader
as web containers typically allow classes under this directory to
be dynamically updated.

- Original Message -
From: marc fleury [EMAIL PROTECTED]
To: Dave Smith [EMAIL PROTECTED];
[EMAIL PROTECTED]
Cc: Julian Gosnell [EMAIL PROTECTED]
Sent: Tuesday, February 05, 2002 5:03 PM
Subject: RE: [JBoss-dev] Status of ear deployment


 Jules,

 the unified deployer on WAR just delegates to you.  I ignore the
 WEB-INF/classes although it would be quite trivial to deploy it at the UCL
 level.

 Should this be done internally to your deployer in which case you want to
 use a UCL to point to wherever to unpack the WEB-INF/classes (under Jetty
 control) and you feed it to the UCL, which will then find these.

 Or I do it, in the WAR deployer, you tell me no biggy.

 Dave, the simplest to get this working right now is to include a jar with
 your classes inside the ear at any level (top is good) that will deploy
your
 classes right now.

 Jules let me know if you want to take care of that, or I can do it.

 marcf

 |-Original Message-
 |From: [EMAIL PROTECTED]
 |[mailto:[EMAIL PROTECTED]]On Behalf Of Dave
 |Smith
 |Sent: Tuesday, February 05, 2002 1:10 PM
 |To: [EMAIL PROTECTED]
 |Subject: [JBoss-dev] Status of ear deployment
 |
 |
 |I am using the current tip (9 am this morning). This ear deployed and
 |worked before (the marc unified class loading)  and now I am getting a
 |class not found exception. Inside the war is
 |
 |WEB-INF/classes/tests/cadex/TestCompanyInfoBean.class
 |
 |and when I try to access it via a servlet I get (see below)
 |known problem? bug ? Dumb user?
 |
 |
 |Error finding class [tests.cadex.TestCom
 |panyInfoBean] in classpath
 |java.lang.ClassNotFoundException: tests.cadex.TestCompanyInfoBean
 | at
 |org.jboss.system.ServiceLibraries.loadClass(ServiceLibraries.java:405
 |)
 | at
 |org.jboss.system.UnifiedClassLoader.loadClass(UnifiedClassLoader.java
 |:101)
 | at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
 | at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
 | at java.lang.Class.forName0(Native Method)
 | at java.lang.Class.forName(Class.java:120)
 | at
 |org.apache.cactus.server.AbstractTestCaller.getTestClassClass(Abstrac
 |tTestCaller.java:331)
 | at
 |org.apache.cactus.server.AbstractTestCaller.getTestClassInstance(Abst
 |ractTestCaller.java:302)
 | at
 |org.apache.cactus.server.AbstractTestCaller.doTest(AbstractTestCaller
 |.java:130)
 | at
 |org.apache.cactus.server.AbstractTestController.handleRequest(Abstrac
 |tTestController.java:122)
 | at
 |org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedi
 |rector.java:134)
 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 | at
 |org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:327
 |)
 | at
 |org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
 |46)
 | at org.mortbay.http.HttpContext.handle(HttpContext.java:1269)
 | at org.mortbay.http.HttpContext.handle(HttpContext.java:1223)
 | at org.mortbay.http.HttpServer.service(HttpServer.java:725)
 | at
 |org.mortbay.http.HttpConnection.service(HttpConnection.java:748)
 | at
 |org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:921)
 | at
org.mortbay.http.HttpConnection.handle(HttpConnection.java:763)
 | at
 |org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
 |138)
 | at
org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:287)
 | at
org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:715)
 | at java.lang.Thread.run(Thread.java:484)
 |
 |
 |
 |___
 |Jboss-development mailing list
 |[EMAIL PROTECTED]
 |https://lists.sourceforge.net/lists/listinfo/jboss-development


 ___
 Jboss-development mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/jboss-development



___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



Re: [JBoss-dev] Status of ear deployment

2002-02-05 Thread Jules Gosnell

Either :

This is a new bug in Jetty - unlikely

Or:

It is a misunderstanding about ClassLoading between JBoss  Jetty - very likely
since this has all reecently changed in JBoss. - much more likely.


We (Jetty) need to understand exactly how the new classloader strategy is
expected to work and what the contract between JBoss and Jetty has now become,
with respect to this new behaviour, because we need to come up with a solution
that will work for JBoss/Jetty and standalone Jetty.

This is really Greg's area, so I invite him to join the fracas.

You there, Greg ? :-)


Jules (sidestepping and ducking)


marc fleury wrote:

 Jules,

 the unified deployer on WAR just delegates to you.  I ignore the
 WEB-INF/classes although it would be quite trivial to deploy it at the UCL
 level.

 Should this be done internally to your deployer in which case you want to
 use a UCL to point to wherever to unpack the WEB-INF/classes (under Jetty
 control) and you feed it to the UCL, which will then find these.

 Or I do it, in the WAR deployer, you tell me no biggy.

 Dave, the simplest to get this working right now is to include a jar with
 your classes inside the ear at any level (top is good) that will deploy your
 classes right now.

 Jules let me know if you want to take care of that, or I can do it.

 marcf

 |-Original Message-
 |From: [EMAIL PROTECTED]
 |[mailto:[EMAIL PROTECTED]]On Behalf Of Dave
 |Smith
 |Sent: Tuesday, February 05, 2002 1:10 PM
 |To: [EMAIL PROTECTED]
 |Subject: [JBoss-dev] Status of ear deployment
 |
 |
 |I am using the current tip (9 am this morning). This ear deployed and
 |worked before (the marc unified class loading)  and now I am getting a
 |class not found exception. Inside the war is
 |
 |WEB-INF/classes/tests/cadex/TestCompanyInfoBean.class
 |
 |and when I try to access it via a servlet I get (see below)
 |known problem? bug ? Dumb user?
 |
 |
 |Error finding class [tests.cadex.TestCom
 |panyInfoBean] in classpath
 |java.lang.ClassNotFoundException: tests.cadex.TestCompanyInfoBean
 | at
 |org.jboss.system.ServiceLibraries.loadClass(ServiceLibraries.java:405
 |)
 | at
 |org.jboss.system.UnifiedClassLoader.loadClass(UnifiedClassLoader.java
 |:101)
 | at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
 | at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
 | at java.lang.Class.forName0(Native Method)
 | at java.lang.Class.forName(Class.java:120)
 | at
 |org.apache.cactus.server.AbstractTestCaller.getTestClassClass(Abstrac
 |tTestCaller.java:331)
 | at
 |org.apache.cactus.server.AbstractTestCaller.getTestClassInstance(Abst
 |ractTestCaller.java:302)
 | at
 |org.apache.cactus.server.AbstractTestCaller.doTest(AbstractTestCaller
 |.java:130)
 | at
 |org.apache.cactus.server.AbstractTestController.handleRequest(Abstrac
 |tTestController.java:122)
 | at
 |org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedi
 |rector.java:134)
 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
 | at
 |org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:327
 |)
 | at
 |org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
 |46)
 | at org.mortbay.http.HttpContext.handle(HttpContext.java:1269)
 | at org.mortbay.http.HttpContext.handle(HttpContext.java:1223)
 | at org.mortbay.http.HttpServer.service(HttpServer.java:725)
 | at
 |org.mortbay.http.HttpConnection.service(HttpConnection.java:748)
 | at
 |org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:921)
 | at org.mortbay.http.HttpConnection.handle(HttpConnection.java:763)
 | at
 |org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
 |138)
 | at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:287)
 | at org.mortbay.util.ThreadPool$JobRunner.run(ThreadPool.java:715)
 | at java.lang.Thread.run(Thread.java:484)
 |
 |
 |
 |___
 |Jboss-development mailing list
 |[EMAIL PROTECTED]
 |https://lists.sourceforge.net/lists/listinfo/jboss-development


_
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



RE: [JBoss-dev] Status of ear deployment

2002-02-05 Thread marc fleury

|We (Jetty) need to understand exactly how the new classloader strategy is
|expected to work and what the contract between JBoss and Jetty has
|now become,
|with respect to this new behaviour, because we need to come up
|with a solution
|that will work for JBoss/Jetty and standalone Jetty.

| |I am using the current tip (9 am this morning). This ear deployed and
| |worked before (the marc unified class loading)  and now I am getting a
| |class not found exception. Inside the war is
| |
| |WEB-INF/classes/tests/cadex/TestCompanyInfoBean.class
| |


| |Error finding class [tests.cadex.TestCom
| |panyInfoBean] in classpath
| |java.lang.ClassNotFoundException: tests.cadex.TestCompanyInfoBean
| | at
| |org.jboss.system.ServiceLibraries.loadClass(ServiceLibraries.java:405
| |)
| | at
| |org.jboss.system.UnifiedClassLoader.loadClass(UnifiedClassLoader.java
| |:101)
| | at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
| | at
|java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
| | at java.lang.Class.forName0(Native Method)
| | at java.lang.Class.forName(Class.java:120)
| | at
| |org.apache.cactus.server.AbstractTestCaller.getTestClassClass(Abstrac

Ok this is the way I read this.

Dave, AbstractTestCaller is your servlet class, how is this one deployed? an
ear? a war? a jar? what are those apache jars?  It appears that it is loaded
by a JBoss UCL, that JBoss UCL is the parent of the Jetty CLs so when that
class is created the class that returns is from JBoss UCL.

Then the code has a thread going to the jetty stack and the jetty stack
delegates to this object and this object does a class.forName()  ( fuck
when will the newbies learn!!!)instead of a
Thread.currentThread().getContextClassLoader() that would return the Jetty
CLs and then the path would be
Class-JettyCl-JBoss UCL says no-Jetty CL says yes everything OK.

But since they didn't use the context classloader we are stuck with the CL
for the class which is JBoss' UCL.

Solutions:

1- Jetty uses JBoss' UCL in our integration.  Problem is gone, that is why
we develop the UCLs today.

2- Jetty CLs bypass the JDK parent delegation model and do explicit creation
of classes from their classloaders.  So any new class seen by Jetty is
loaded by Jetty CL, delegated to JBoss CL if not found.  THIS IS SPEC
COMPLIANT.  THIS COMPLETELY BREAKS THE INTEGRATION as the Jetty Classes
would not be seen as loaded by the same classloaders as the JBoss classes.
You want to share classes? tough it out.

3- I code WARDeployer parsing of the webinf/classes (simple), we can code a
fancy granularity if need be (scott's point) but priority is to
integration and ease of use.  Never breaks, can be made spec compliant. This
is transparent to Jetty (bypasses its management of web-inf/classes)

4- The user stop bothering us with more packaging non-sense from SUN, puts
all his support classes in a jar in the next 30 seconds, drops that jar
either separate either AT ANY LEVEL of the ear (top, or under
WEB-INF/Classes/myClasses.jar) or whatever and that will be deployed
properly AS IS by JBoss without further ado and will work transparently on
Jetty.

5- Apache developers get their shit together and STOP doing class.forName().

My order of preference is 5/ 4/ (make use of the new deployer and stop
bothering us :) 3/ easy spec compliance 2/ and then 1/

Looking at it I can get 3 out the door in 40 minutes flat without dealing
with the bureaucracy at Apache and such.

jules, gregw, let me know...

marcf

PS: Was this really working before? if so it means we were parsing the
WEB-INF/classes ourselves??? strange... I don't remember that. Besides the
point.

| |tTestCaller.java:331)
| | at
| |org.apache.cactus.server.AbstractTestCaller.getTestClassInstance(Abst
| |ractTestCaller.java:302)
| | at
| |org.apache.cactus.server.AbstractTestCaller.doTest(AbstractTestCaller
| |.java:130)
| | at
| |org.apache.cactus.server.AbstractTestController.handleRequest(Abstrac
| |tTestController.java:122)
| | at
| |org.apache.cactus.server.ServletTestRedirector.doPost(ServletTestRedi
| |rector.java:134)
| | at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
| | at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
| | at
| |org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:327
| |)
| | at
| |org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
| |46)
| | at org.mortbay.http.HttpContext.handle(HttpContext.java:1269)
| | at org.mortbay.http.HttpContext.handle(HttpContext.java:1223)
| | at org.mortbay.http.HttpServer.service(HttpServer.java:725)
| | at
| |org.mortbay.http.HttpConnection.service(HttpConnection.java:748)
| | at
| |org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:921)
| | at
|org.mortbay.http.HttpConnection.handle(HttpConnection.java:763)
| |  

RE: [JBoss-dev] Status of ear deployment

2002-02-05 Thread marc fleury

Sorry thinking some more and answering some

|2- Jetty CLs bypass the JDK parent delegation model and do
|explicit creation
|of classes from their classloaders.  So any new class seen by Jetty is
|loaded by Jetty CL, delegated to JBoss CL if not found.  THIS IS SPEC
|COMPLIANT.  THIS COMPLETELY BREAKS THE INTEGRATION as the Jetty Classes
|would not be seen as loaded by the same classloaders as the JBoss classes.
|You want to share classes? tough it out.

Well come to think of it it only breaks integration if we are *sharing*
classes. Duplicate classes in /webinf/classes and some other package (EJB or
another servlet) would not be seen.

The proper way to do integration (classes seen by this ear/war and other
classes) is to move the classes out of there.  So in fact having Jetty
implement the spec and look for classes locally and then delegate to JBoss
would only break integration in case the user duplicates classes in their
packages and is looking for sharing. This looks OK.

|3- I code WARDeployer parsing of the webinf/classes (simple), we can code a
|fancy granularity if need be (scott's point) but priority is to
|integration and ease of use.  Never breaks, can be made spec
|compliant. This
|is transparent to Jetty (bypasses its management of web-inf/classes)

This is really my favorite now.  I am working on the assumption that dave is
not full of shit and that this package was indeed working before, this means
that we were parsing the webinf/classes in OUR deployer already, unless
jetty was implementing a 2/ solution before which it wasn't.

Greg, note that if I implement 3 right now and you implement 2 your 2 will
override 3 (you will find the class in the 2 step and not go with the UCL
from 3/ therefore have exactly the same effect).  In other words you are
free to implement your spec compliance and do away with parent delegation as
requested by the spec (which is dumb imsho) with the knowledge and
understanding that
1- this is irrelevant to the case standalone or not it only comes into play
if you have a CL to delegate to (JBoss parent in this case).
2- it will only break integration of shared classes. But that is the spec
for you.

I think I have reached a conclusion on my part.
a/ I will go ahead with 3/
b/ you can override by implementing your JettyCL that do servlet spec
compliance on ordering  but if you don't and just delegate as is, we have
integration.

And thus speed.

Anything for speed.


|4- The user stop bothering us with more packaging non-sense from SUN, puts

this is un-realistic :)

|5- Apache developers get their shit together

and so is this.

marcf

WAIT WAIT WAIT

PS: 1/ (UCL in Jetty) would give us spec compliance AND integration, but I
would rather do the work myself... although that would be one place where
having the JBoss/Jetty codebase becomes interesting... h maybe this is
simpler even though it is really a fork from the jetty base.



___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



Re: [JBoss-dev] Status of ear deployment

2002-02-05 Thread Jules Gosnell

Thanks, Marc, for taking the time to spell this out

Hopefully Greg will come on line soon. I'm sure he'll have some comments.

I'll get back to you all when I have had chance to think about this, probably
tomorrow night.

My gut feeling is that:

1. If a quick fix is available, perhaps we should take it for 3.0

2. The quick fix is probably exactly that, and will probably need revisiting
soon, but at least it might buy us the time to sort out a long-term solution.

Speak to you then,


Jules

marc fleury wrote:

 Sorry thinking some more and answering some

 |2- Jetty CLs bypass the JDK parent delegation model and do
 |explicit creation
 |of classes from their classloaders.  So any new class seen by Jetty is
 |loaded by Jetty CL, delegated to JBoss CL if not found.  THIS IS SPEC
 |COMPLIANT.  THIS COMPLETELY BREAKS THE INTEGRATION as the Jetty Classes
 |would not be seen as loaded by the same classloaders as the JBoss classes.
 |You want to share classes? tough it out.

 Well come to think of it it only breaks integration if we are *sharing*
 classes. Duplicate classes in /webinf/classes and some other package (EJB or
 another servlet) would not be seen.

 The proper way to do integration (classes seen by this ear/war and other
 classes) is to move the classes out of there.  So in fact having Jetty
 implement the spec and look for classes locally and then delegate to JBoss
 would only break integration in case the user duplicates classes in their
 packages and is looking for sharing. This looks OK.

 |3- I code WARDeployer parsing of the webinf/classes (simple), we can code a
 |fancy granularity if need be (scott's point) but priority is to
 |integration and ease of use.  Never breaks, can be made spec
 |compliant. This
 |is transparent to Jetty (bypasses its management of web-inf/classes)

 This is really my favorite now.  I am working on the assumption that dave is
 not full of shit and that this package was indeed working before, this means
 that we were parsing the webinf/classes in OUR deployer already, unless
 jetty was implementing a 2/ solution before which it wasn't.

 Greg, note that if I implement 3 right now and you implement 2 your 2 will
 override 3 (you will find the class in the 2 step and not go with the UCL
 from 3/ therefore have exactly the same effect).  In other words you are
 free to implement your spec compliance and do away with parent delegation as
 requested by the spec (which is dumb imsho) with the knowledge and
 understanding that
 1- this is irrelevant to the case standalone or not it only comes into play
 if you have a CL to delegate to (JBoss parent in this case).
 2- it will only break integration of shared classes. But that is the spec
 for you.

 I think I have reached a conclusion on my part.
 a/ I will go ahead with 3/
 b/ you can override by implementing your JettyCL that do servlet spec
 compliance on ordering  but if you don't and just delegate as is, we have
 integration.

 And thus speed.

 Anything for speed.

 |4- The user stop bothering us with more packaging non-sense from SUN, puts

 this is un-realistic :)

 |5- Apache developers get their shit together

 and so is this.

 marcf

 WAIT WAIT WAIT

 PS: 1/ (UCL in Jetty) would give us spec compliance AND integration, but I
 would rather do the work myself... although that would be one place where
 having the JBoss/Jetty codebase becomes interesting... h maybe this is
 simpler even though it is really a fork from the jetty base.

 ___
 Jboss-development mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/jboss-development


_
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development



Re: [JBoss-dev] Status of ear deployment

2002-02-05 Thread Greg Wilkins


Sorry, but I've been away from my computer, so I have not been able to contribute
to this discussion

But looking over what has been said - my quick response is

If WARDeployer is handling the WEB-INF/lib jars *and* the WEB-INF/classes
directory, then I think the simplest thing to do is to switch the
Jetty CL into J2 compliant mode (ie always delegates).

This means that whatever policy is selected (Servlet compliant or J2 compliant)
will be implemented in a single place within JBoss.   Jetty's own interpretation
of the servlet spec and changes to it's definition of System class will not
effect the running of JBoss.

Actually, I'll look at changing Jetty so that it can use JBoss's classloader
directly and then we don't need to bother with any delegation.

But as I said, this is my quick response as I once again rush out the door...
I'll read everything again late tonight and send a more considered response.

cheers


marc fleury wrote:
 Sorry thinking some more and answering some
 
 |2- Jetty CLs bypass the JDK parent delegation model and do
 |explicit creation
 |of classes from their classloaders.  So any new class seen by Jetty is
 |loaded by Jetty CL, delegated to JBoss CL if not found.  THIS IS SPEC
 |COMPLIANT.  THIS COMPLETELY BREAKS THE INTEGRATION as the Jetty Classes
 |would not be seen as loaded by the same classloaders as the JBoss classes.
 |You want to share classes? tough it out.
 
 Well come to think of it it only breaks integration if we are *sharing*
 classes. Duplicate classes in /webinf/classes and some other package (EJB or
 another servlet) would not be seen.
 
 The proper way to do integration (classes seen by this ear/war and other
 classes) is to move the classes out of there.  So in fact having Jetty
 implement the spec and look for classes locally and then delegate to JBoss
 would only break integration in case the user duplicates classes in their
 packages and is looking for sharing. This looks OK.
 
 |3- I code WARDeployer parsing of the webinf/classes (simple), we can code a
 |fancy granularity if need be (scott's point) but priority is to
 |integration and ease of use.  Never breaks, can be made spec
 |compliant. This
 |is transparent to Jetty (bypasses its management of web-inf/classes)
 
 This is really my favorite now.  I am working on the assumption that dave is
 not full of shit and that this package was indeed working before, this means
 that we were parsing the webinf/classes in OUR deployer already, unless
 jetty was implementing a 2/ solution before which it wasn't.
 
 Greg, note that if I implement 3 right now and you implement 2 your 2 will
 override 3 (you will find the class in the 2 step and not go with the UCL
 from 3/ therefore have exactly the same effect).  In other words you are
 free to implement your spec compliance and do away with parent delegation as
 requested by the spec (which is dumb imsho) with the knowledge and
 understanding that
 1- this is irrelevant to the case standalone or not it only comes into play
 if you have a CL to delegate to (JBoss parent in this case).
 2- it will only break integration of shared classes. But that is the spec
 for you.
 
 I think I have reached a conclusion on my part.
 a/ I will go ahead with 3/
 b/ you can override by implementing your JettyCL that do servlet spec
 compliance on ordering  but if you don't and just delegate as is, we have
 integration.
 
 And thus speed.
 
 Anything for speed.
 
 
 |4- The user stop bothering us with more packaging non-sense from SUN, puts
 
 this is un-realistic :)
 
 |5- Apache developers get their shit together
 
 and so is this.
 
 marcf
 
 WAIT WAIT WAIT
 
 PS: 1/ (UCL in Jetty) would give us spec compliance AND integration, but I
 would rather do the work myself... although that would be one place where
 having the JBoss/Jetty codebase becomes interesting... h maybe this is
 simpler even though it is really a fork from the jetty base.
 
 



-- 
Greg Wilkins[EMAIL PROTECTED]  GB  Phone: +44-(0)7092063462
Mort Bay Consulting Australia and UK.Mbl Phone: +61-(0)4 17786631
http://www.mortbay.com   AU  Phone: +61-(0)2 98107029


___
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development