[NEXUS-58] Bundle Nexus as a WAR Created: 05/23/08  Updated: 09/04/13  Resolved: 11/04/08

Status: Closed
Project: Dev - Nexus
Component/s: None
Affects Version/s: None
Fix Version/s: 1.1

Type: Improvement Priority: Minor
Reporter: Brian Fox Assignee: Unassigned
Resolution: Fixed Votes: 55
Labels: None
Remaining Estimate: 0h
Time Spent: 36h
Original Estimate: Not Specified

Issue Links:
Relates
relates NEXUS-1055 Error when attempting to launch Nexus... Closed
dependent
depends on NEXUS-1040 The server has not found anything mat... Closed
Last Updated By: Rich Seddon
Date of First Response:

 Description   

This is a place holder for the request to produce a war packaging of Nexus



 Comments   
Comment by tbrantb [ 07/15/08 ]

Bundling Nexus as a war would prove very useful in a managed environment where applications must be deployed to a given container (glassfish in my case). So I currently have to continue using Artifactory.

Comment by jeromatron [ 08/20/08 ]

I think it would be nice to at least have the option so that if you already have tomcat hooked up to apache on your server, it's easier to have everything together.

Comment by theosophe74 [ 08/29/08 ]

For better or worse, our company has standardized on IBM WebSphere as our JEE container. Thus, if there's a JEE-based application or tool that we want to deploy to production, it must be deployable as a WAR or EAR.

Comment by ptraca [ 09/03/08 ]

Bundling Nexus as war would for sure be very useful.
I would like to deploy it at our company on glassfish v2, that is our current standard mandatory JEE container.

Comment by Brian Fox [ 09/06/08 ]

Just out of curiosity, for those that have mandatory j2ee containers, this means simply that you are not allowed to run anything that isn't part of the container? What exactly is it that makes it fall into this mandatory bucket? Because it's Java? Because it's a Server? Because it uses http?

I understand a standard container for wars, but I'm trying to understand what makes a given application have to fall under that container. I mean, if this was a dns server, would it apply? What about a mail server? (even if it had a web component build in?)

Comment by obastard [ 09/12/08 ]

It's not mandatory, but after you've installed the n'th thing on the build system, wars get mighty convenient.

If there was a WAR, then Hudson+Nexus is a 5 minute install.

Comment by Michal Hlavac [ 09/12/08 ]

Hello Brian,

your example applications are not web applications. So it's not the same thing. Question is: why is nexus so tightly coupled with jetty?

Comment by Brian Fox [ 09/12/08 ]

Michal, I think it's semantics. Nexus' primary job is to manage repositories, it happens that right now this is done via http but that may not always be the case.

Anyway, i wouldn't say Nexus is tightly coupled with Jetty, we currently don't use Jetty specific code in the nexus app. The reason we chose to focus on a single container is to reduce the scope of issues that may crop up. Every app container does things slightly differently and having a war would mean we have to support N number of platforms essentially, which would distract us from adding real value to the app.

Comment by smoreno [ 09/15/08 ]

Hello,
to have the possibility to install Nexus as a war would be more flexible in some installation cases.

For example, we have some dev tools installed in a Tomcat on a AIX server, it' would be easy to install Nexus as a new war,
but harder to install Nexus as a standalone application because the bundle do not provide a way to install Nexus on AIX.

Comment by Brian Fox [ 09/15/08 ]

Sebastien, fyi there is an AIX jsw binary available, we just chose to bundle the most commonly used ones in Nexus. http://wrapper.tanukisoftware.org/doc/english/download.jsp

Comment by smoreno [ 09/16/08 ]

Hello Brian, thank you for your answer.
But in our case we can't launch the special wrapper provided by Tanuki because of missing libraries and
in some Business cases you can't ask for special librairies to be installed in a shared system (other software needs of libraries).

"Proximity" is installed in a tomcat without problems as a War, too bad, because Nexus is far more better.
I agree that a repository server should not be very coupled with http, but a WAR is an easy way to use a repository server, even in already installed infrastructures.

Comment by ericrich [ 09/16/08 ]

Has any consideration been given to leveraging OSGi?

OSGi services are not restricted to HTTP. OSGi containers can be embedded in a WAR using a servlet adapter provided by the OSGi container.

Comment by digerata [ 09/19/08 ]

I'd like to throw my support in for a war. It's not a matter of directly requiring a servlet container, like some other comments. The problem is that there is only one port 80... And our build server's port 80 is in use by Tomcat. We have Artifactory, Hudson, Jira, Clearspace, and our build artifacts all running on Tomcat.

It's a pain to expect users to use a standalone server with no other web services running just to use a repository. Or to expect them to change to an alternative port...

I must admit I checked out Nexus because I've completely had it with Artifactory and its bugs. Artifactory seemed like the best maven repository out there at the time. The only one worth looking at before Nexus came along. Now, Nexus looks very promising. But, alas, we can't use it for this one issue and I'm sure many more people have the same problem.

Good job thus far!

Depressed in Michigan,

-Mike

Comment by arikkfir [ 09/25/08 ]

One plus for using a single container and deploy Nexus into it is that that container usually has monitoring and balancing capabilities set in place by the team that manages it. Installing Nexus in that container would expose it to the added value of these monitoring capabilities.

Comment by jeromatron [ 10/06/08 ]

Can you configure the log4j or logging to log to both places in the case of a WAR? Just a thought.

Comment by coderacerx [ 10/20/08 ]

<i>The reason we chose to focus on a single container is to reduce the scope of issues that may crop up. Every app container does things slightly differently and having a war would mean we have to support N number of platforms essentially, which would distract us from adding real value to the app.</i>

That is a cop out if I ever heard one. Apparently, you have something against middleware vendors or you are scared of what you don't know because it doesn't take much effort at all to work on most, if not all, containers.

Welcome to the 21st century. People deploy in servlet containers. That's that. If you want to cry foul on that practice, you are a little late to the party.

Comment by Brian Fox [ 10/22/08 ]

Juven, I tried the war in jetty, but I'm getting a bunch of exceptions. It's probably a packaging issue, but take a look.

jvm 1    | 2008-10-22 18:51:24.288::INFO:  Extract jar:file:/C:/Users/brianf/Des
ktop/jetty/jetty-6.1.12.rc4/webapps/nexus.war!/ to C:\Users\brianf\AppData\Local
\Temp\Jetty_0_0_0_0_8080_nexus.war__nexus__mzi9k7\webapp
jvm 1    | 2008-10-22 18:51:36.433::WARN:  failed org.mortbay.jetty.webapp.WebAp
pContext@9d6065{/nexus,jar:file:/C:/Users/brianf/Desktop/jetty/jetty-6.1.12.rc4/
webapps/nexus.war!/}
jvm 1    | java.lang.NoClassDefFoundError: org/codehaus/plexus/PlexusContainer
jvm 1    |      at org.sonatype.nexus.web.NexusBooterListener.contextInitialized
(NexusBooterListener.java:39)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.startContext(Context
Handler.java:548)
jvm 1    |      at org.mortbay.jetty.servlet.Context.startContext(Context.java:1
36)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppCon
text.java:1234)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandl
er.java:517)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.
java:460)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(Co
ntextHandlerCollection.java:156)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:130)
jvm 1    |      at org.mortbay.jetty.Server.doStart(Server.java:222)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:9
85)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Sourc
e)
jvm 1    |      at java.lang.reflect.Method.invoke(Unknown Source)
jvm 1    |      at org.mortbay.start.Main.invokeMain(Main.java:194)
jvm 1    |      at org.mortbay.start.Main.start(Main.java:523)
jvm 1    |      at org.mortbay.start.Main.main(Main.java:119)
jvm 1    |      at org.mortbay.jetty.win32service.JettyServiceWrapperListener.st
art(JettyServiceWrapperListener.java:47)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManag
er.java:2788)
jvm 1    | Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.Plex
usContainer
jvm 1    |      at java.net.URLClassLoader$1.run(Unknown Source)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.net.URLClassLoader.findClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:379)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:341)
jvm 1    |      at java.lang.ClassLoader.loadClassInternal(Unknown Source)
jvm 1    |      ... 25 more
jvm 1    | 2008-10-22 18:51:36.580::WARN:  Unknown realm: Test JAAS Realm
jvm 1    | 2008-10-22 18:51:36.626::WARN:  failed ContextHandlerCollection@8c4a7
7
jvm 1    | java.lang.NoClassDefFoundError: org/codehaus/plexus/PlexusContainer
jvm 1    |      at org.sonatype.nexus.web.NexusBooterListener.contextInitialized
(NexusBooterListener.java:39)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.startContext(Context
Handler.java:548)
jvm 1    |      at org.mortbay.jetty.servlet.Context.startContext(Context.java:1
36)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppCon
text.java:1234)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandl
er.java:517)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.
java:460)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(Co
ntextHandlerCollection.java:156)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:130)
jvm 1    |      at org.mortbay.jetty.Server.doStart(Server.java:222)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:9
85)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Sourc
e)
jvm 1    |      at java.lang.reflect.Method.invoke(Unknown Source)
jvm 1    |      at org.mortbay.start.Main.invokeMain(Main.java:194)
jvm 1    |      at org.mortbay.start.Main.start(Main.java:523)
jvm 1    |      at org.mortbay.start.Main.main(Main.java:119)
jvm 1    |      at org.mortbay.jetty.win32service.JettyServiceWrapperListener.st
art(JettyServiceWrapperListener.java:47)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManag
er.java:2788)
jvm 1    | Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.Plex
usContainer
jvm 1    |      at java.net.URLClassLoader$1.run(Unknown Source)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.net.URLClassLoader.findClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:379)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:341)
jvm 1    |      at java.lang.ClassLoader.loadClassInternal(Unknown Source)
jvm 1    |      ... 25 more
jvm 1    | 2008-10-22 18:51:36.787::INFO:  Opened C:\Users\brianf\Desktop\jetty\
jetty-6.1.12.rc4\logs\2008_10_22.request.log
jvm 1    | 2008-10-22 18:51:36.787::WARN:  failed HandlerCollection@f30494
jvm 1    | java.lang.NoClassDefFoundError: org/codehaus/plexus/PlexusContainer
jvm 1    |      at org.sonatype.nexus.web.NexusBooterListener.contextInitialized
(NexusBooterListener.java:39)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.startContext(Context
Handler.java:548)
jvm 1    |      at org.mortbay.jetty.servlet.Context.startContext(Context.java:1
36)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppCon
text.java:1234)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandl
er.java:517)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.
java:460)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(Co
ntextHandlerCollection.java:156)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:130)
jvm 1    |      at org.mortbay.jetty.Server.doStart(Server.java:222)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:9
85)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Sourc
e)
jvm 1    |      at java.lang.reflect.Method.invoke(Unknown Source)
jvm 1    |      at org.mortbay.start.Main.invokeMain(Main.java:194)
jvm 1    |      at org.mortbay.start.Main.start(Main.java:523)
jvm 1    |      at org.mortbay.start.Main.main(Main.java:119)
jvm 1    |      at org.mortbay.jetty.win32service.JettyServiceWrapperListener.st
art(JettyServiceWrapperListener.java:47)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManag
er.java:2788)
jvm 1    | Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.Plex
usContainer
jvm 1    |      at java.net.URLClassLoader$1.run(Unknown Source)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.net.URLClassLoader.findClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:379)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:341)
jvm 1    |      at java.lang.ClassLoader.loadClassInternal(Unknown Source)
jvm 1    |      ... 25 more
jvm 1    | 2008-10-22 18:51:36.788::WARN:  Error starting handlers
jvm 1    | java.lang.NoClassDefFoundError: org/codehaus/plexus/PlexusContainer
jvm 1    |      at org.sonatype.nexus.web.NexusBooterListener.contextInitialized
(NexusBooterListener.java:39)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.startContext(Context
Handler.java:548)
jvm 1    |      at org.mortbay.jetty.servlet.Context.startContext(Context.java:1
36)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppCon
text.java:1234)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandl
er.java:517)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.
java:460)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(Co
ntextHandlerCollection.java:156)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCo
llection.java:152)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapp
er.java:130)
jvm 1    |      at org.mortbay.jetty.Server.doStart(Server.java:222)
jvm 1    |      at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCyc
le.java:50)
jvm 1    |      at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:9
85)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
jvm 1    |      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
jvm 1    |      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Sourc
e)
jvm 1    |      at java.lang.reflect.Method.invoke(Unknown Source)
jvm 1    |      at org.mortbay.start.Main.invokeMain(Main.java:194)
jvm 1    |      at org.mortbay.start.Main.start(Main.java:523)
jvm 1    |      at org.mortbay.start.Main.main(Main.java:119)
jvm 1    |      at org.mortbay.jetty.win32service.JettyServiceWrapperListener.st
art(JettyServiceWrapperListener.java:47)
jvm 1    |      at org.tanukisoftware.wrapper.WrapperManager$12.run(WrapperManag
er.java:2788)
jvm 1    | Caused by: java.lang.ClassNotFoundException: org.codehaus.plexus.Plex
usContainer
jvm 1    |      at java.net.URLClassLoader$1.run(Unknown Source)
jvm 1    |      at java.security.AccessController.doPrivileged(Native Method)
jvm 1    |      at java.net.URLClassLoader.findClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at java.lang.ClassLoader.loadClass(Unknown Source)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:379)
jvm 1    |      at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppCl
assLoader.java:341)
jvm 1    |      at java.lang.ClassLoader.loadClassInternal(Unknown Source)
jvm 1    |      ... 25 more
jvm 1    | 2008-10-22 18:51:36.850::INFO:  Started SelectChannelConnector@0.0.0.
0:8080
Comment by Brian Fox [ 10/22/08 ]

For everyone watching and waiting on this issue, we are close to having a war for you. A war does exist, but there are some packaging issues still...but alas it did work when assembled by hand so it's close.

Comment by Juven Xu [ 10/23/08 ]

Currently I copy all we UI files(web.xml, js, images, ext... ) from nexus-webapp by hand, so there must be inconsistentness between these files and rest-api, we need to extract these UI files so that both nexus-webapp and this WAR can reuse them, and also eliminate the inconsistentness.

Comment by Juven Xu [ 10/23/08 ]

ok, the nexus-webapp is now itself a war, so no need of nexus-javaee-webapp

Comment by Juven Xu [ 10/27/08 ]

made a branch named nexus-war, it works in tomcat 6

Comment by Kristine O'Connor [ 10/27/08 ]

Hi Juven - I tried the new war file with Tomcat 6, and it does deploy and start successfully. I am not copying any other files for nexus to any other locations. My tomcat is running on port 8080, and when I try to access nexus after it is started through Tomcat, I take an error of:

The server has not found anything matching the request URI

Is there a step that I am missing? Do I need to copy any other Nexus files to my machine other than the war?

Comment by John Casey [ 10/27/08 ]

Trying to merge the nexus-javaee-webapp on the nexus-war branch to nexus-webapp on trunk, I performed the following steps to get the WAR to work under jetty:run:

  • moved the bundle web.xml off to src/main/assembly/bundle/webapp, and modded it to include juven's startup listener in the one in src/main/webapp
  • copied juven's plexus.xml and plexus.properties into src/main/webapp/WEB-INF, and excluded those files from the bundle assembly (also excludes the web.xml in that dir)
    • It seems that these files are slightly different from the main ones used for the nexus bundle, which is why I copied them instead of simply reusing those in the bundle directory.
  • added the gzip-web-content (generated by antrun) to the webResources list for the war
    • This is simply to bring the WAR into step with juven's, since we're producing these gzip files anyway.
  • excluded the jetty version of servlet-api 2.5 from the nexus-rest-api dependency
    • (it should probably be marked as provided in the plexus-jetty artifact, but I wasn't really sure about that part, so I used an exclusion instead)
  • moved the platform artifact from scope == provided to scope == runtime to get it included in the WEB-INF/lib dir for the WAR, and attempted to exclude it from the bundle
    • I still need to verify that this dependency exclusion is working.

I'll also need to reapply these steps to the 1.1 branch to make the WAR work out there, once I'm confident that all loose ends are tied up on trunk.

UPDATE: Also...

  • changed the scope for the dependencySet that includes plexus-platform-jsw in src/main/assembly/base-component.xml from provided to the default (runtime), to track the scope change in the POM.
  • added new dependency-set to src/main/assembly/app-component.xml with scope == provided and includes == javax.servlet:servlet-api
    • This compensates for the exclusion of the jetty servlet-api artifact, mentioned above.
Comment by John Casey [ 10/27/08 ]

I've merged these changes, using the steps noted above, into the 1.1.0 branch as well.

Comment by Juven Xu [ 10/28/08 ]

added a missing index.html, now works in tomcat-6

Comment by Juven Xu [ 10/28/08 ]

removed index.html and welcome-page configuration in web.xml, then it works in Tomcat 6

Comment by Juven Xu [ 10/28/08 ]

on Tomcat, the problem is:
'http://localhost:8080/nexus/' works
'http://localhost:8080/nexus' doesn't
so the last slash is critical

Comment by Juven Xu [ 10/31/08 ]

The war doesn' t work on Glassfish, got exception like:

2008-10-31 00:14:27.023 ERROR [Thread-23:] - javax.enterprise.system.container.web: WebModule[/nexus]nexus: Error during the starting of the Restlet Application
java.lang.NullPointerException
at com.sun.enterprise.web.logger.LoggerBase.write(LoggerBase.java:215)
at com.sun.enterprise.web.logger.LoggerBase.log(LoggerBase.java:172)
at org.apache.catalina.core.ApplicationContext.log(ApplicationContext.java:824)
at org.apache.catalina.core.ApplicationContextFacade.log(ApplicationContextFacade.java:307)
at com.noelios.restlet.ext.servlet.ServletLogger.log(ServletLogger.java:70)
at java.util.logging.Logger.doLog(Logger.java:494)
at java.util.logging.Logger.log(Logger.java:517)
at java.util.logging.Logger.info(Logger.java:1036)
at org.sonatype.plexus.rest.PlexusRestletApplicationBridge.configure(PlexusRestletApplicationBridge.java:133)
at org.sonatype.plexus.rest.PlexusRestletApplicationBridge.createRoot(PlexusRestletApplicationBridge.java:112)
at org.restlet.Application.getRoot(Application.java:303)
at com.noelios.restlet.application.ApplicationHelper.start(ApplicationHelper.java:139)
at org.restlet.Application.start(Application.java:490)
at com.noelios.restlet.ext.servlet.ServerServlet.init(ServerServlet.java:815)
at javax.servlet.GenericServlet.init(GenericServlet.java:254)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1178)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1007)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4800)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5188)
at com.sun.enterprise.web.WebModule.start(WebModule.java:327)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:973)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:957)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:688)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1581)
at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1222)
at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:182)
at com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebModuleDeployEventListener.java:278)
at com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEventListener(AdminEventMulticaster.java:974)
at com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent(AdminEventMulticaster.java:961)
at com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEventMulticaster.java:464)
at com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEventMulticaster.java:176)
at com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastEvent(DeploymentNotificationHelper.java:308)
at com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(DeploymentServiceUtils.java:226)
at com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(ServerDeploymentTarget.java:298)
at com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(ApplicationStartPhase.java:132)
at com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(DeploymentPhase.java:108)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDeploymentService.java:919)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:591)
at com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeploymentService.java:635)
at com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsConfigMBean.java:744)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:375)
at com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:358)
at com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:464)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:90)
at $Proxy1.invoke(Unknown Source)
at com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInterceptor.java:304)
at com.sun.enterprise.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:174)
at com.sun.enterprise.deployment.client.DeploymentClientUtils.startApplication(DeploymentClientUtils.java:145)
at com.sun.enterprise.deployment.client.DeployAction.run(DeployAction.java:537)
at java.lang.Thread.run(Thread.java:619)

Comment by Kristine O'Connor [ 11/04/08 ]

The war file has been successfully tested and validated using Tomcat 5.5, Tomcat 6, and Resin application servers. Testing was done on glassfish, but there were problems when launching the UI. That defect will be linked to this one for reference.

Generated at Wed Apr 25 05:12:54 UTC 2018 using JIRA 7.3.3#73014-sha1:d5be8da522213be2ca9ad7b043c51da6e4cc9754.