Starting Jetty via launch script does not work - java

I have a problem with starting Jetty via the startup command /etc/init.d/jetty. When I execute the command the following output is generated:
/etc/init.d/jetty start
Starting Jetty servlet engine.:
Jetty Rotate logs
Jetty servlet engine started, reachable on http://jagadguru:80/.: jetty.
It does start successfully when I type java -jar start.jar in my Jetty directory.
Can anyone help me with this?

This is likely a file permission issue. Even if you are running the start script with sudo, the script defines a jetty user (default is jetty). I had an issue similar to this where my permissions on /tmp prevented jetty from creating a file there. I adjusted the permissions on /tmp and all is well! The jetty user also needs permissions on the jetty folder of course.
Also, for checking if Jetty is finding java correctly, run sudo service jetty check

It's probably an issue due to wrong permissions on some work or log folder. I assume the start script tries to change the user and therefore doesn't has the same permissions as the one you use when running Jetty via "java -jar".
Another possibility is that you don't have JAVA_HOME set and the start script doesn't find your java bin.
Please attach some kind of log file as it is really hard to say more without more detailed information.

As answered here, the default configuration for Jetty in /etc/default/jetty only allows connections from localhost, you need to set JETTY_HOST to 0.0.0.0 to allow Jetty to accept connections from any host.
Add the following line to /etc/default/jetty:
JETTY_HOST 0.0.0.0

Related

Apache Tomcat will not start on Mac

I cannot get Apache Tomcat to start. I followed the instructions for installing Tomcat on the Mac found at https://www.dev2qa.com/how-to-install-tomcat-in-macos/.
After I type the command to start Tomcat, the response from the command line is that Tomcat has started.
However, when I go to the browser, the default page is not showing up. I further checked to see if the port was being used by using the command
lsof -nP -i4TCP:8080 | grep LISTEN
which showed that no program is using the port. I also read the 'RUNNING.txt' that instructed me on setting the environmental variables, which I did. Any suggestions on why Tomcat is not starting up.
I'm using jdk 1.8.0_202 and Apache Tomcat 9.0.14 that is running of Mac OS High Sierra.
BatChmod
After downloading a fresh version of Tomcat, I use the BatChmod app to alter the file permissions. Tomcat will not launch properly without altering the permissions.
I do not know the command-line equivalent, but here is a screenshot of the settings I have used for years successfully.
Plea for help
If anyone can write the equivalent as a shell script for macOS, please post!
Even better, explain how to wrap such a script as an AppleScript for drag-and-drop execution in Finder.
The problem turned out to be a permissions problem. When I installed Tomcat, I put the folder in the '/Library/Tomcat' directory. Even though the Tomcat files were changed to be executable, the user and group ownership remained the same. To get Tomcat to run, I moved the directory to 'Users/MyUserName/Tomcat'. Once I did that, the default Tomcat page ran.

Unable to start Tomcat server in IntelliJ IDEA

I found following issue whenever i try to run tomcat server with intellijidea. I have tried adding hostname to localhost but didn't work. Any suggestions?
Take a closer look at the server's output, to see the reason, why was Tomcat not started:
java.net.UnknownHostException: nitesh-pc: nitesh-pc
That could mean, that you have a problem with your hosts file (in OS Windows it could be found at {WindowsFolder}\System32\drivers\etc\hosts). You just need to add your hostname to localhost ip-address (don't forget to uncomment it, if needed), like:
127.0.0.1 localhost nitesh-pc
And then try to restart your server again.
I had an issue where Tomcat appeared to have started inside IntelliJ, but when I tried to open the Tomcat homepage I was getting "HTTP 404 Not Found" in the browser.
Starting Tomcat standalone (running startup.bat from the command prompt) started Tomcat and I could see the homepage fine.
I compared the output of running both standalone and within IntelliJ and noticed that CATALINA_BASE was different.
So I created a setenv.bat file in Tomcat bin directory (it was initially not there) and set CATALINA_BASE there like:
set CATALINA_BASE=C:\apache-tomcat-8.5.14
After that, Tomcat starts from IntelliJ and I can access the homepage.
Just putting this out there because I was at a loss why the page was not available when Tomcat seemed to have started OK.
Hope this will help someone.
This may happen if the machine has multiple or changing IP adresses (e.g. when using VPN or Hyper-V, Docker or other virtualization).
The solution is to define the IP address Tomcat should use for RMI:
-Djava.rmi.server.hostname=127.0.0.1
(This is a sane default for a Tomcat running locally, but you’re setup might require a different one.)
This has to be set so it’s applied as a command-line argument for the JVM. This might be in IntelliJ or Tomcat itself (for Linux systems bin/setenv.sh in the Tomcat directory, for a Windows service it’s usually in HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Apache Software Foundation\Procrun 2.0\Tomcat9\Parameters\Java\Options.

Tomcat starts but home page cannot open with url http://localhost:8080

I am a newbie in Java, and I am trying to develop a web application.
I have Windows 7 32 bit. I have installed Java 7 and set the path and classpath as well. After that I installed Tomcat 7.
When I try to open tomcat home page using URL localhost:8080, it does not open and Tomcat stops automatically.
Please help me.
Make sure no other application using port 8080 before starting tomcat. If that's not the problem please paste tomcat log.
If you want to change tomcat's default port, go to tomcat folder and open conf folder, in which you can see server.xml. In that file you can see something like <Connector port= . Change the port value and start tomcat.
If you started tomcat through eclipse, It can be solved in different ways too.
Method 1:
Right click on server --> Properties
click on Switch location and apply.
Method2:
Double click in the server in eclipse.
Change Server location to Use tomcat installation(takes control of tomcat installation).
Your issue is not with port 8080, but with port 8005. Port 8005 is the shutdown port for Tomcat.
Rather than trying to figure out what is using port 8005, it may just be easier to edit TOMCAT_DIR/conf/server.xml and change the shutdown port to 8006
<Server port="8006" shutdown="SHUTDOWN">
For *Unix based systems, you can check the ports used by a particular application by issueing the following command in the terminal
[~/.]$ netstat -tuplen
You will get the list of all the ports that are being currently held and used by their respective process ID's
For windows user, type netstat -anin command prompt to see ports that are listening, this may come handy.
1) Using Terminal (On Linux), go to the apache-tomcat-directory/bin folder.
2) Type ./catalina.sh start
3) To stop Tomcat, type ./catalina.sh stop from the bin folder. For some reason ./startup.sh doesn't work sometimes.
For mac users
First Try : go to activity monitor -> search for java and kill the instance then restart the server and try.
Second Try:
Check log file for any errors under tomcat logs folder.
Use below command to check tomcat logs in terminal
tail -f {tomcatpath}/logs/catalina.out
Third Try:
Check if node or other apps using the same port. Use below command to check which app listening to a specific port. You will see list of apps with pid in second column.
lsof -i :8080 | grep LISTEN
Kill the process using below command
sudo kill -9 pid
If you are using eclipse to start the server then check for the server location being used and the deployment path:
In my case changing this to Tomcat installation instead of workspace metadata worked for me.
My issue has solved.I was getting log as below.
SEVERE: StandardServer.await: create[localhost:8005]:
java.net.BindException: Cannot assign requested address: JVM_Bind
My tomcat server was automatically stopping when I tried to open tomcat homepage with
URL.
So I just made some changes in windows->System32->drivers->etc->host file.
keep only 127.0.0.1 localhost and remove all other. your problem will be solved.
Thank you guys for your help :D
If you have your tomcat started (in linux check with ps -ef | grep java) and you see it opened the port 8080 or the one you configured in server.xml (check with netstat --tcp -na | grep <port number>) but you still cannot access it in your browser check the following:
It may start but with a delay of 3-5 minutes. Check the logs/catalina.out. You should see something like this when the server started completely.
INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 38442 msIf you don't have this INFO line your server startup is not complete yet. The problem may occur due to the SecureRandom class responsible to provide random Session IDs and which can cause big delays during startup.
Check more details and the solution here.
Check your firewall (on linux iptables -L -n): You can try to reset your firewall completely iptables -F if you are not into an exposed environment. However, pay attention, that leaves you without protection therefore it can be dangerous.
Check your selinux (if you are on linux).
These are some of the most forgotten and not obvious issues in having your Apache Tomcat up and running.
I am using Eclipse Java EE IDE for Web Developers. Version: Oxygen.1a Release (4.7.1a) in Windows 8.1 x64 with Apache Tomcat 8.5.24 (for testing purpose).
Port Name & Numbers for my Tomcat Server are :
Tomcat admin port : 8005
HTTP/1.1 : 8081 (my Tomcat Listening Port Number)
AJP/1.3 : 8009
Peoples, for those the Tomcat were running good earlier, and sometimes sudden after stopping tomcat server explicitly by pressing the below shown image button or may be other reasons.
Either they continuously failed to start/restart the tomcat with below said error:
Server Tomcat vX.Y Server at localhost failed to start.
or sometimes the Tomcat Server is started but instead of showing Tomcat Homepage in web browser, it is throwing client exception HTTP Status 404 – Not Found. in preferred web browser.
possibly, there are many reasons i.e. wrong Host name defined, Wrong Tomcat Server Locations defined in eclipse, project JDK/JRE version mismatch with Tomcat JRE dependent version, maven project version mismatch due to maven.compiler.source and maven.compiler.target version not defined under properties tag, mismatch version of project facet Dynamic Web Module to 2.5/3.0, Sometimes Tomcat Server is running on Windows Services level, previous stopped Tomcat port number were still listening and the processing pid were not killed in Tomcat defined timespan Timeouts Stop (in seconds): 15(by default) in eclipse and pid still running, failed to start in defined Start (in seconds): XX, etc.
Here I will give the resolution on, how to check and kill the running existing Tomcat port number's processing pid(beware, you must be aware with after effects).
In Windows, open you command prompt, and follow steps(my tomcat HTTP port is 8081):
netstat -ano | findstr :8081
TCP 0.0.0.0:8081 0.0.0.0:0 LISTENING 2284
TCP [::]:8081 [::]:0 LISTENING 2284
if any listening is being there, above command will list details of port listening along with processing pid at last of the line(here pid is 2284).
now kill the running pid like:
taskkill /PID 2284 /F
SUCCESS: The process with PID 2284 has been terminated.
also illustrated the above two steps like following:
Now, after resolving above illustrated reason, start the Tomcat Server.
I had the same issue. My tomcat was started but I was getting HTTP 404 page not found.However, in my situation, I installed tree instances of tomcat. Each instance contains conf, temp, work, webapps and logs folders. Unless I forgot, to copy the global web.xml under conf folder of each tomcat.
e.g: /opt/tomcat/mytomcatInstance/conf/web.xml
The web.xml Deployment Descriptor file describes how to deploy a web application in a servlet container.
So even if my tomcat was up, my web apps could not be deployed properly.
The problems may happen because of memory issue.
java.lang.OutOfMemoryError: Java heap space
please verify the logfile, any issues related to hardware(memory).
Look in TomcatDirectory/logs/catalina.out for the logs. If the logs are too long, delete the catalina.out file and rerun the app.
In my case, the port that tomcat was running on was defined in an application.properties file for 8000, not 8080. In my case, it looked like the same problem described here. Just leaving this here in case anyone has a similar setup and issue! :)

NoClassDefFoundError: org/apache/catalina/startup/Bootstrap when running tomcat from exe/as service

I have been running a Tomcat 6.0.37 server for quite some time via the startup.bat.Now I want to run tomcat as a service that starts automatically when the machine starts up.
I created the service with the bat : service.bat install.This created the service succesfully.When trying to start it however I get the error in the title.I then tried running just the exe(tomcat6.exe).This gave me the exact same error.
I have checked that CATALINA_HOME,JAVA_HOME and JRE_HOME is set correctly.bootstrap.jar does exist in tomcat/bin.Path to the jvm is correct.jvm.dll does exist in jre6/bin/server.
I also found a thread with a different class missing where they said rt.jar was missing from the jre,I checked this and mine exists in jre6/lib/.I really don't have anymore ideas as to what can be wrong.
try to update the service by executing (adapt to your path):
C:\> tomcat6 //US//Tomcat6 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \
C:\> --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
US means: update service.
This should fix the classpath.
All the necessary information are in the official website:
http://tomcat.apache.org/tomcat-6.0-doc/windows-service-howto.html
Recommend using one of the "Java as a Windows Service" frameworks as they handle adding JARs to the classpath, etc. This can be done manually however via the "java -cp {set your classpath here...}" options as well.

Trouble in starting my jetty server on a remote server

I have started a jetty server in my remote server. But I got problem accessing the default page. I followed the getting started steps and used the command java -jar start.jar to start the server. The port is set to 8080. When I use my Ip http://20.14.228.123:8080/ The site is never found. Do you guys have any clue of what I have done wrong? According to my terminal window it is running.
UPDATE:
sorry I ran wget localhost:8080 and connection failed it says. But I can go in to the default page though. I'm newbie in Java apps deployment, but I exported a war file on my computer and placed it under webapps in the jetty folder is that right procedure? because it don't runs. According to my web.xml in my webapp a servlet is mapped through /Push/GetContacts and when I enter the destination(http://localhost:8080/Push/GetContacts) in my web browser it don't show up?
FINAL:
Never mind I fixed it!
Can you try to run wget localhost:8080 from you server terminal? Just to check that port\ip not blocked somewhere on network layer? It must download html showed by jetty if it actually run...
Q: how do I get the jetty server to not shut down all the time after I close down the terminal?
A: start Jetty as service(process)

Categories