Context pointing to external directory in Jetty 9 - deployment

I want to deploy a .war file to Jetty by setting up a context that points to my external .war (outside webapps folder). I know how to do this in Tomcat, but I can't figure out how to do this for Jetty 9.
In Tomcat I placed an .xml file to configure my context in $CATALINA_HOME/conf/Catalina/localhost :
<?xml version='1.0' encoding='utf-8'?>
<!-- Context fragment for deploying ServletExample.war -->
<Context path="/CurrencyServlet" docBase="/Users/macbook/Desktop/School/Java/Temp/CurrencyServlet.war" debug="0" privileged="true"/>
Can anyone provide a simple example for Jetty 9?

Have a look at the provided $jetty_home/webapps/test.xml file. In jetty9 you can configure your webapps, etc. by placing a ContextProvider config file in $jetty_home/webapps.
Have a look at the docs: http://www.eclipse.org/jetty/documentation/current/configuring-contexts.html
This is how you configure the path to your webapp:
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set>

Related

Deployment of webapp in wildfly using Context Descriptors

I searched using "How to set Context Path in Wildfly", but got no success. Can anyone help me on how to do it..?
I've used the following code to set the Context Path in tomcat where I can access my application directly using localhost:8080/myApp
myApp.xml contains as follows and placed at $CATALINA_BASE\conf\[enginename]\[hostname]\myApp.xml
<Context path="myApp" docBase="G:\workspace\j2ee\myProject\myWebApp\WebContent" />
similar or equivalent type of configuration want to use in Wildfly server.
In your standalone.xml configuration you want to add a deployment like this:
<deployments>
<deployment name="myProject" runtime-name="myProject.war">
<fs-archive path="G:/workspace/j2ee/myProject/myWebApp/WebContent"/>
</deployment>
</deployments>
Then within WebContent/WEB-INF create a file called jboss-web.xml with a configuration similar to:
<?xml version="1.0"?>
<jboss-web>
<context-root>/my-context-path</context-root>
</jboss-web>
If this doesn't work you may need to rename WebContent directory to WebContent.war, even if it is exploded it may want .war in the name.

Setting context-root path in Jboss

I want to deploy an application outside the "deploy" folder of JBoss in JBoss 6.0.0
my folder names must be specified in URL syntax. For example, to specify that C:/rev/deploy be used for deployment,inside deploy folder I placed my war file i.e,ORNC.war so I edited my profile.xml as
<property name="applicationURIs">
<list elementClass="java.net.URI">
<value>${jboss.server.home.url}deploy</value>
<!-- Add your own deploy folder -->
<value>file:///C:/rev/deploy</value>
</list>
</property>
After this I restarted my server. Now I am trying accessing: http://localhost:8000/rev/deploy/ORNC,
I am getting an error resource not available. How can I acess it? Please help me
Finally I got the answer my question ,Actually we need to create a jboss-web.xml file with below coding
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/rev/deploy/ORNC</context-root>
</jboss-web>
After that I placed this xml file in my WEB-INF folder of my WAR file.Now I can access my war file through http://localhost:8080/rev/deploy/ORNC
By referring this I get an solution for my question
JBoss 7: how to change a WAR context root
Thanks for Mr.simkam and Stackoverflow.

Specify context-path for spring-boot WAR

I have a spring boot web application that deploys as a WAR. Right now when I deploy it to my Tomcat 7 server, it uses the name of the war file as the context, such as /myartifactid-1.5.4.SNAPSHOT/. I want to specify the context-path, but
server.contextPath=/mywebapp
seems to only work for embedded tomcat. I've added a META-INF/context.xml with only this
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="false" path="/mywebapp" />
but that hasn't had any effect.
EDIT: This is NOT a spring-boot issue, but instead related to how NetBeans behaves differently from Eclipse. NetBeans apparently recognizes the context path parameter in context.xml, but Eclipse doesn't. In Eclipse you have to modify the Web Projects Settings to set the context path.
Changing Tomcat context path of web project in Eclipse
Since you are packaging your Spring Boot application as a war (as opposed to a jar with an embedded tomcat container) the context path will be the name of the war.
For example if you name your packaged application mywebapp.war and you place it under Tomcat's webapps, it will be available under /mywebapp
when the war does not have the same name with the project, the application will not be accessible via the context path on the tomcat,
to fix this you need to go to the POM.xml change the name of package to match the context path name
server.servlet.context-path=/virtualcard
<groupId>com.test.csc.virtualcard</groupId>
<artifactId>virtualcard</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>virtualcard</name>
then the war will be: virtualcard.war

Deploy .war file from another directory to Tomcat 6

If it is possible, how do I deploy a war file from another directory (say D:\foo.war) to Tomcat 6, without copying it into the webapps directory of Tomcat?
If not, is there any configuration to change the default webapp folder to some other folder?
You can do both.
how do I deploy a war file from another directory (say D:\foo.war) to Tomcat 6, without copying it into the webapps directory of Tomcat?
Add a Context xml file to conf/Catalina/localhost. The name of the file should be the name that you want for the context. For example, if my URL is http://your.domain.com/my-context then the name of the file would be my-context.xml. Inside that XML file add something like this.
<?xml version="1.0"?>
<Context docBase="d:\foo.war">
</Context>
The docBase attribute should point to your WAR file or an exploded WAR directory. See more on this here.
If not, is there any configuration to change the default webapp folder to some other folder?
In conf/server.xml locate your Host tag and set the appBase attribute. This defaults to webapps, but you can change it to any location that you like.
Ex:
<Host appBase="d:\my-web-apps" ...>
For best results, point to local storage and not network storage (i.e. NFS or Samba).
Simply specify a context entry in your server.xml (under <Host> </Host>
<Context docBase="xyz/abc.war" path="/myapp" reloadable="true"/>

How to auto set crossContext in an Eclipse WTP Tomcat

How can I set the crossContext directive in the context of an web application so any WTP publish / deploy will set this correct to the generated Applications context.xml (conf/Catalina/localhost/appname.xml)
I tried to set it in the Servers context.xml as "default" but also generated a stub context.xml in the WEB-INF/context.xml of the web application, but nothing seems to help here ;/
The WEB-INF/context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true">
</Context>
Notes:
related to How to get a tomcat project path from different project in same tomcat by using java
http://olafsblog.sysbsb.de/tomcat-5-und-crosscontext-konfiguration/
http://www.eclipse.org/forums/index.php/t/51881/
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
http://www.eclipse.org/forums/index.php/t/50640/
It's simple but not perfect:
After adding the module to tomcat via wtp, open the WTP Tomcat server.xml (typically located in your workspace > Servers > Tomcat vX.X Server at localhost) and add attribute crossContext="true" to the <Context> tag of the corresponding web-module.
check "Publish module contexts to seperate XML files" in Tomcat WTP Frontend
Positive side-effects:
This will survive any "clean Tomcats working directory" or "clean project" actions
(still) Negative:
This will be overridden / removed if you change any WTP Tomcat options that affects server.xml like adding new modules, changing ports... After this action, you have to add it again.
There is still NO frontend option as like for reloadable or ContextPath ;/