Incidentally, you should fix your slf4j setup, its mangled right now,
attempting to log to multiple outputs.


--
Joakim Erdfelt <[email protected]>
webtide.com <http://www.webtide.com/> - intalio.com/jetty
Expert advice, services and support from from the Jetty & CometD experts
eclipse.org/jetty - cometd.org

On Tue, Sep 23, 2014 at 2:05 PM, Joakim Erdfelt <[email protected]> wrote:

> So I took your project, cloned it, made no changes, built it, ran it, and
> I do not get your error.
>
> http://pastebin.com/0Lnca9Bn
>
>
>
> --
> Joakim Erdfelt <[email protected]>
> webtide.com <http://www.webtide.com/> - intalio.com/jetty
> Expert advice, services and support from from the Jetty & CometD experts
> eclipse.org/jetty - cometd.org
>
> On Tue, Sep 23, 2014 at 1:28 PM, David Kowis <[email protected]>
> wrote:
>
>> On 09/23/2014 02:39 PM, Joakim Erdfelt wrote:
>> > A few things.
>> > You seem to be grasping at straws in your code.
>>
>> Sadly, this is somewhat true, I have a few questions regarding the
>> suggestions.
>>
>> >
>> > First, you'll need a proper set of WebAppContext configurations
>> > (declared all of them, in the correct order)
>> > Example:
>> >
>> https://github.com/jetty-project/embedded-servlet-3.1/blob/master/src/test/java/org/eclipse/jetty/demo/EmbedMe.java#L28-L38
>> >
>> >         context.setConfigurations(new Configuration[]
>> >         {
>> >             new AnnotationConfiguration(),
>> >             new WebInfConfiguration(),
>> >             new WebXmlConfiguration(),
>> >             new MetaInfConfiguration(),
>> >             new FragmentConfiguration(),
>> >             new EnvConfiguration(),
>> >             new PlusConfiguration(),
>> >             new JettyWebXmlConfiguration()
>> >         });
>>
>> Why do I need to declare all of these? As I understand it, I should only
>> need the ones that affect the container config that I want (Like if I
>> don't have any web-fragment.xmls I could skip the
>> FragmentConfiguration.) (I'll note that it takes significantly longer to
>> start up when they're all configured, vs when I only include the ones I
>> need)
>>
>> So in that example, it requires that you setParentLoaderPriority(true),
>> which changes the way classloading happens. If I set that to true, my
>> war deployment works, but it will not ever work with it set to false.
>> Why is this the case, but it works fine if I were to run the war file
>> with a standalone jetty (say with jetty-launcher)?
>>
>> >
>> > Next, you'll require jetty-annotations.jar (and transitive dependencies)
>> > in your environment too.
>>
>> Yep, no problem there. It also appears that I need to have spring-web in
>> the environment that I start jetty in, else it doesn't do the spring
>> WebApplicationInitializer detection at all.
>>
>> //Without spring-web
>> 15:21:05.217 INFO  o.e.j.s.Server - jetty-9.2.3.v20140905
>> 15:21:06.509 INFO  o.e.j.w.StandardDescriptorProcessor - NO JSP Support
>> for /, did not find org.apache.jasper.servlet.JspServlet
>> 15:21:06.528 INFO  o.e.j.s.h.ContextHandler - Started
>> o.e.j.w.WebAppContext@13dbe345
>> {/,file:/tmp/jetty-0.0.0.0-8080-war-1.NOPE.war-_-any-7447262048590329370.dir/webapp/,AVAILABLE}{/home/dkowis/gitwork/repose/Valve2/valve/build/war-1.NOPE.war}
>>
>>
>> //with spring-web
>> 15:21:34.659 INFO  o.e.j.w.StandardDescriptorProcessor - NO JSP Support
>> for /, did not find org.apache.jasper.servlet.JspServlet
>> 15:21:34.663 INFO  / - No Spring WebApplicationInitializer types
>> detected on classpath
>> 15:21:34.679 INFO  o.e.j.s.h.ContextHandler - Started
>> o.e.j.w.WebAppContext@7709d976
>> {/,file:/tmp/jetty-0.0.0.0-8080-war-1.NOPE.war-_-any-2624512083090645583.dir/webapp/,AVAILABLE}{/home/dkowis/gitwork/repose/Valve2/valve/build/war-1.NOPE.war}
>>
>>
>> >
>> > After that, you'll need to make sure that the following are in your
>> > WEB-INF/lib directories
>> >
>> > The spring jar(s) that contains the classes:
>> >
>> >   * org.springframework.web.SpringServletContainerInitializer
>> >     <
>> https://github.com/spring-projects/spring-framework/blob/v4.1.0.RELEASE/spring-web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java
>> >
>> >     (this is the class that Jetty finds and calls)
>> >   * org.springframework.web.WebApplicationInitializer
>> >     <
>> https://github.com/spring-projects/spring-framework/blob/v4.1.0.RELEASE/spring-web/src/main/java/org/springframework/web/WebApplicationInitializer.java
>> >
>> >     (this is the type of class that the
>> >     SpringServletContainerInitializer has stated that it handles
>> >     <
>> https://github.com/spring-projects/spring-framework/blob/v4.1.0.RELEASE/spring-web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java#L110
>> >)
>> >
>> > Make sure these are only in your webapp's WEB-INF/lib directory.
>> > Then, all of your classes that implement WebApplicationInitializer
>> > should be in WEB-INF/classes/ or WEB-INF/lib/
>> >
>> > That should be it.
>> > What happens is Jetty scans all of your container jars, then WEB-INF/lib
>> > jars, then WEB-INF/classes files.
>> > In the process, it sees that WEB-INF/lib/spring-something.jar has a
>> > resource called
>> META-INF/services/javax.servlet.ServletContainerInitializer
>> > which references the
>> > org.springframework.web.SpringServletContainerInitializer
>> > <
>> https://github.com/spring-projects/spring-framework/blob/v4.1.0.RELEASE/spring-web/src/main/resources/META-INF/services/javax.servlet.ServletContainerInitializer
>> >
>> >
>> > Jetty will see the @HandlesType(WebApplicationInitializer.class) on that
>> > ServletContainerInitializer and call the standard
>> > ServletContainerInitializer.onStartup(Set<Class<?>>
>> > webAppInitializerClasses, ServletContext servletContext)
>> > <
>> https://github.com/spring-projects/spring-framework/blob/v4.1.0.RELEASE/spring-web/src/main/java/org/springframework/web/SpringServletContainerInitializer.java#L145
>> >
>> > with all of the classes that implement WebApplicationInitializer that it
>> > has found.
>> >
>> > At this point, Jetty is out of the equation and Spring is doing the rest
>> > of the initialization for itself.
>>
>> I've got all this, but it's not happening.
>>
>> My war file contents: https://gist.github.com/dkowis/ffba7f0dc84e1d7d1bef
>>
>> I have the things you describe, but it doesn't behave the way you
>> describe. I'll push up some commits for this project demonstrating this
>> on a branch: https://github.com/dkowis/valve2/tree/warDeploy
>>
>> Unless I've missed something, the environment you describe I've
>> duplicated, but it's not working. (Maybe I did miss something)
>>
>> >
>> > Good luck
>> >
>> > --
>> > Joakim Erdfelt <[email protected] <mailto:[email protected]>>
>> > webtide.com <http://www.webtide.com/> - intalio.com/jetty
>> > <http://intalio.com/jetty>
>> > Expert advice, services and support from from the Jetty & CometD experts
>> > eclipse.org/jetty <http://eclipse.org/jetty/> - cometd.org
>> > <http://cometd.org/>
>> >
>> > On Tue, Sep 23, 2014 at 12:11 PM, David Kowis
>> > <[email protected] <mailto:[email protected]>>
>> wrote:
>> >
>> >     On 09/23/2014 12:58 PM, David Kowis wrote:
>> >     > I found this thread:
>> >     > http://dev.eclipse.org/mhonarc/lists/jetty-users/msg04587.html
>> >
>> >     I found a couple more things:
>> >
>> http://www.eclipse.org/jetty/documentation/current/jetty-classloading.html
>> >
>> >     So now I've got an additional commit:
>> >     a44cb9a9a5437fd1eee60d6071d5fc4ef8f8ce79
>> >
>> >     This works, but it only works if I set parentLoaderPriority(true),
>> from
>> >     the documentation I'm not exactly clear as to why this works.
>> >
>> >     The classes I want to load are all in the War file themselves, they
>> >     shouldn't be necessary in the classpath that I'm configuring the
>> server
>> >     in. There must be something else wrong...
>> >
>> >     I don't want to include the classes in the launcher project's
>> classpath,
>> >     when they should all be in the war file.
>> >
>> >     I have this working with the servlet launcher mechanism, because I
>> do
>> >     want to actaully share some things in a spring context at one level
>> >     higher than the war files, so perhaps it's best if I don't try to
>> deploy
>> >     lots of war files, and just have the jetties be in my one classpath.
>> >
>> >     --
>> >     David Kowis
>> >
>> >     >
>> >     > It gets me part of the way there, but I'm not deploying using a
>> >     > directory, I'm deploying using an existing war file.
>> >     >   Jetty Version: 9.2.3.v20140905
>> >     >
>> >     > I tried setting:
>> >     > (note this is Scala, but it doesn't really matter in this context)
>> >     > val webapp = new WebAppContext()
>> >     > webapp.setContextPath("/")
>> >     > webapp.setWar(config.getString("warLocation"))
>> >     >
>> >
>>  
>> webapp.setAttribute("org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
>> >     > ".*/WEB-INF/classes/.*")
>> >     >
>> >     > I'm not sure how to get it to pick up my WebAppInitializer class.
>> The
>> >     > jetty logs indicate that it has tried, but not found anything:
>> >     > 12:54:15.653 INFO  / - No Spring WebApplicationInitializer types
>> >     > detected on classpath
>> >     >
>> >     >
>> >     > I'll note that the warfile deploys beautifully in Jetty 9 using
>> >     > https://github.com/Khoulaiz/gradle-jetty-eclipse-plugin
>> >     >
>> >     > Its only when I'm trying to do it myself, using this simple
>> embedded
>> >     > mechanism that it doesn't work. I'm probably missing something
>> >     obvious,
>> >     > but I can't quite figure it out.
>> >     >
>> >     > The project is here: https://github.com/dkowis/valve2
>> >     >
>> >     > You can get here with `gradle run` (I'm using gradle 2.x) at the
>> root,
>> >     > at commit 9db7cc77f5
>> >     >
>> >     > Thanks in advance!
>> >     > David Kowis
>> >     >
>> >     > PS: sorry for double send if this happened, I sent the other
>> using the
>> >     > wrong email address.
>> >     > _______________________________________________
>> >     > jetty-users mailing list
>> >     > [email protected] <mailto:[email protected]>
>> >     > To change your delivery options, retrieve your password, or
>> >     unsubscribe from this list, visit
>> >     > https://dev.eclipse.org/mailman/listinfo/jetty-users
>> >     >
>> >
>> >     _______________________________________________
>> >     jetty-users mailing list
>> >     [email protected] <mailto:[email protected]>
>> >     To change your delivery options, retrieve your password, or
>> >     unsubscribe from this list, visit
>> >     https://dev.eclipse.org/mailman/listinfo/jetty-users
>> >
>> >
>> >
>> >
>> > _______________________________________________
>> > jetty-users mailing list
>> > [email protected]
>> > To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> > https://dev.eclipse.org/mailman/listinfo/jetty-users
>> >
>>
>> _______________________________________________
>> jetty-users mailing list
>> [email protected]
>> To change your delivery options, retrieve your password, or unsubscribe
>> from this list, visit
>> https://dev.eclipse.org/mailman/listinfo/jetty-users
>>
>
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to