I'm new in Java EE and Tomcat.
I worked on a REST Java application in OpenShift with JBoss EWS 2.0 and I had no problem. Recently, we got a server that I have to run my web service on.
Following How to deploy a war file in Tomcat 7, I went to my application root and used this command:
jar -cvf myapp.war *
Note that myapp is my application name for example.
I put the .war file to /base/path/of/tomcat/webapps/ and went to Tomcat GUI App Manager.
I saw that Tomcat created a folder with my .war name and put files into it, so I started my app but when I went to http://localhost:8080/myapp/ it returned 404. However, in OpenShift, when I opened it (opened root path), it displayed the index.html insomuch my webservice path is not valid and does not work.
please guide me and thank you for your time spent on my question.
I have to write an answer because I can't comment.
I suggest to give us a copy of the web.xml file.
On another hand, you have to know that Tomcat is a Servlet Container and JBoss a full stack JEE server. If you have EJB in your web-app it will not works.
AS Clément Duveau says an EJB application cannot be deployed in a Servlet container (like Tomcat). An EJB application needs to be deployed in an Application Server like JBoss, Wildfly, GlassFish, Weblogic, Websphere, TomEE, etc.
The most similar server to Tomcat (Java EE compliant) would be TomEE.
Suggestion: If you need to use Tomcat, you can change EJB for Spring Framework.
it is simple.
there is two way to deploy a war file on tomcat with custom path
the first one is to
renaming your war file to custom URL you want (for example the war file name is java-web-app-1.0.war and your path is myapp so you have to rename it to myapp.war)
and copy and put it under {tomcat-path}/webapps/, then the Tomcat/TomEE does its job. (it creates an empty directory with the same name of your war file)
after about 1 minutes you can check the path (in this example must be localhost:8080/myapp and see your war file was deployed)
the second one is to use Tomcat GUI.
go to Web Application Manager part.
it's a page like this:
in Deploy box just fill the Context field (it will be the custom path and in this case is myapp) and then choose the war file and push deploy button.(do not need to fill XML Configuration file URL field)
then it gives you a message like this:
this means your war file was deployed on the custom path.
Related
I've got a project in Eclipse, with a .war file inside it. I'm using Spring for the project, with the help of Maven too.
I've installed Tomcat 8, but I'm having trouble deploying the webapp to Tomcat. The Tomcat runs without errors and the console output of launching the Tomcat looks like it is successfully deploying it, however when I go to localhost is just displays the generic Tomcat home page saying I have successfully deployed Tomcat.
I've tried changing my server location to use the tomcat installation, I've changed the location in the properties of my server to not be the workspace metadata.
When I add jars to the tomcat, I click on my project, and under it it lists the Spring jar if that is of any relevance.
I don't really know what else to put here at the moment, but I'm at hand to respond immediately to any questions or any more info that you require.
Thanks.
EDIT:
http://localhost:8080, it leads me to this: http://i.imgur.com/82lmpai.png
My tomcat console output is: https://gist.githubusercontent.com/J-Owens/8164b3ec6dbed9986322/raw/6756486aad0092647bbea8f315c42ac5ba9550b1/tomcatconsole
Each war file will have a name associated with it. When you use localhost:8080 as the URL, Tomcat will use the war with name ROOT under tomcat/webapps to display on the browser. By default, Tomcat will have a ROOT war that comes with the tomcat bundle. If you need to open your project, you will need to use localhost:8080/<your-war-name> to open your project's page. Alternatively, you could remove everything under tomcat/webapps and rename your war to ROOT to be able to access your project pages with the localhost:8080.
I built my java RESTful application in Eclipse with Jersey and a couple other libraries. My question is, how do I deploy this to a Tomcat server? Do I export it as a WAR file? Do I need to deploy the libraries I used as well or are they packaged in the WAR file?
The server is running on an ubuntu machine which I can access over ssh. I got the server running with "apt-get install tomcat7". Which folder should I put it in? Is any configuration needed? What should I do with the web.xml file?
Thanks in advance.
You usually wouldn't use Apache to directly serve a Jersey web application as Apache is not a Java application server. It would be served from a Java server such as Tomcat instead. If you wish to serve your Jersey application as if it was located on your Apache server, you would still have a Tomcat server running and set up a reverse proxy to your Tomcat server. I personally use a server such as Wildfly or TomEE which implements the full JavaEE profile and means you are less likely to run into errors. Nearly all Java application servers also have the capability of serving static content so unless you specifically need Apache features, you do not need to go to the trouble of also running Apache.
With each one of these servers you would need the .WAR file and deploy it, either through the appropriate maven plugin, the web manager or placing the .WAR into the appropriate directory.
Dependencies for a .WAR specified in the 'compile' scope will be included as part of the .WAR file and those in the 'provided' scope will not be included (for when your web server has these included)
I have created an application in Java EE, I have learned how to deploy it in the tomcat server using the manager app or by copying the war file to the webapps folder. Now I can start the tomcat server only from the Netbeans IDE.
I want to know how to start the apache tomcat server without using the IDE and run my web application from the war file deployed. If I'm headed in the wrong direction please correct me. I'm asking this to gain knowledge of how to deploy the .war file in another server system without using the IDE only the tomcat server.
The shell scripts located in "CATALINA_HOME/bin" are the most bare-bones way of getting Tomcat up and running. The two scripts capable of starting Tomcat in this directory are named "catalina" and "startup", with extensions that vary by platform.
In your tomcat installation directory, there would be a startup.bat/sh file which will start the server for you. Moreover you can see the conf folder as well if you want to change any configurations. Whatever war you copy to the webapps folder will be automatically deployed
I am reading "Java Webservices: Up and Running" to study for my OCE WSD certification. I installed Apache Tomcat 7.0.54 and am able to view the Tomcat homepage at localhost:8080. I am in chapter 1 of the mentioned book and have built my first project with the .war deployed into ..\apache-tomcat-7.0.54\webapps\MyWebservice.war. I installed CURL to try a simple ping with...
curl -v http://localhost:8080/predictions/
I am getting 404 error: Not found. I also get this while using my web browser to view the same URL. I thought that since my .war file was deployed into my apache tomcat 'webapps' folder, simply starting the Tomcat server would pick up that .war file and start the webservice. Any ideas what I might be doing wrong or steps I might have missed to start my webservice?
Edit for Solution:
curl -v http://localhost:8080/MyWebservice/
check the name of the application mentioned in the web.xml.
If web.xml is not present, the name of the application would be the name of the war.
Tomcat maintains hierarchy where the servlets are of the scope of the application.
Try using
http://<>:8080/<>
it should return you something. If it does, then try adding the servlet name.
hope it helps.
Probably you want http://localhost:8080/MyWebservice/predictions/ since Tomcat deploys War files the context name equal to the War file you use.
I guess a drawback of using such an awesome IDE like eclipse is that you miss the point for what happens behind the scenes of an application. I'm a ruby developer so not a java veteran. So I've been coding a project in java and using the spring framework for IOC and MVC. Can someone explain to me what is going on when I select run on server in eclipse? Because eventually I will be deploying this masterpiece of an application to a Linux server. Here is my setup. I am using Spring MVC 3 and the maven plugin in eclipse. In the pom.xml file, I have stuff like latest spring release version, log4j, spring mvc, spring context etc.
I have been testing my application on localhost using the handy option of run on server in the eclipse IDE. The server configuration in eclipse is pointing to the tomcat directory location for where I have installed tomcat 7. Please demystify what happens behind the scenes and what I will need to do if I want to deploy this application on a production server. The more detail the better. Thanks a ton in advance.
Deploying a web application to Tomcat is as simple as this (assuming Tomcat is installed)
Bundle your application in a .war with the correct format.
Move the generated .war file to the /webapps directory of your Tomcat installation folder.
Run the /bin/startup.[sh|bat] script in the Tomcat installation folder.
Note that there are intermediate steps you can do to configure the deployment, like changing your context path. Go through the Tomcat documentation for details.
In step 3, Tomcat will extract the .war contents to a directory in the /webapps folder with the same name as your .war file. It will use this as the context path. The script itself launches a java process by putting the WEB-INF/[class|lib|...] onto the classpath along with some Tomcat libraries.
So Eclipse basically does all the steps above for you.
Ultimately you are deploying an web application that means you are deploying a war file to the server. Regardless of using frameworks like spring, struts anything.
SO a web application request starts from web.xml file. SO for spring mvc application, you are mapping all request coming from browser to DispatcherServlet and then this guy is responsible to manage whole life cycle of your application.
For more details of how MVC works please see
http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html
So in order to deploy your application (a war) on server first of all you have to create a war from your source code. You can go to traditional approach to use java given utility like using jar from command prompt or you can use ANT, GRADLE, MAVEN and such build tool that creates war for you in automated way.
Spring is not doing anything extra for you. I believe you to research a bit more on how these tools works.
Once a war is ready for you, you can simply go to tomcat UI and there you will find options to deploy your war.
I hope it helps you.
All the majic happens in two places.
The first is your 'Servers' directory in the root of your Eclipse Package Explorer. These are your server configuration files that Eclipse will use (mostly) when it creates a new server instance.
The second is in the ./metadata/.plugins/org.eclipse.wst.server.core/ file system directory in your Eclipse workspace. This is where the tomcat application is actually deployed by eclipse.
The Tomcat Documentation is pretty good actually and helps explain how to do deployments. FYI, I do not know many people that use the Manager, from my experience most people deploy their applications by hand.