You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by LINUS FERNANDES <li...@gmail.com> on 2019/09/12 13:33:25 UTC
Embedded Tomcat server starts but unable to connect via browser on
mobile phone.
I have set up an embedded Tomcat server program on Arch Linux on Termux
using OpenJDK version 12.
However, I am unable to connect to the server using the browser. The same
WAR file with a web.xml works fine on Jetty.
Could you point me in the right direction?
The Java class is as follows:
package launch;
import java.text.MessageFormat;
import java.util.logging.Logger;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.webresources.DirResourceSet;
import org.apache.catalina.webresources.StandardRoot;
@SuppressWarnings("PMD.ShortClassName")
public final class Main {
private static final Logger LOGGER =
Logger.getLogger(Main.class.getName());
private static final String WORKING_DIR =
System.getProperty("java.io.tmpdir") + "/webapps";
private Main() {
throw new IllegalStateException("Private constructor");
}
public static void main(String[] args) {
try {
Tomcat tomcat = new Tomcat();
// The port that we should run on can be set into an environment
variable
// Look for that variable and default to 8080 if it isn't there.
String webPort = System.getenv("PORT");
if (webPort == null || webPort.isEmpty()) {
webPort = "8080";
}
System.out.println(webPort);
tomcat.setSilent(false);
tomcat.setPort(Integer.valueOf(webPort));
tomcat.setBaseDir(WORKING_DIR);
tomcat.getHost().setAppBase(WORKING_DIR);
tomcat.getHost().setAutoDeploy(true);
tomcat.getHost().setDeployOnStartup(true);
System.out.println(System.getProperty("catalina.home"));
System.out.println(System.getProperty("catalina.base"));
String userDir = System.getProperty("user.dir");
String webappDirLocation = userDir + "/dist/Webapps-2.0.0.war";
tomcat.getHost().getAppBaseFile().mkdir();
// Ensure that the webapps directory exists
Context appContext =
tomcat.addWebapp(tomcat.getHost(), "/Webapp", webappDirLocation);
appContext.setParentClassLoader(
Thread.currentThread().getContextClassLoader());
WebResourceRoot resources = new StandardRoot(appContext);
resources.addPreResources(
new DirResourceSet(resources, "/WEB-INF/classes", "", "/"));
appContext.setResources(resources);
tomcat.start();
LOGGER.info(() -> {
return MessageFormat.format("Deployed {0} as {1}",
appContext.getBaseName(),
appContext.getBaseName());
});
tomcat.getServer().await();
} catch (LifecycleException lce) {
System.err.println(lce);
}
}
}
The web.xml is as follows. It's probably irrelevant.
<?xml version="1.0" encoding="iso-8859-1"?>
<web-app xmlns=" http://java.sun.com/xml/ns/javaee "
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "
version="3.0">
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>servlets.FirstServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DbServlet</servlet-name>
<servlet-class>servlets.DbServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>GetPreferences</servlet-name>
<servlet-class>servlets.GetPreferences</servlet-class>
</servlet>
<servlet>
<servlet-name>Checkout</servlet-name>
<servlet-class>servlets.Checkout</servlet-class>
</servlet>
<servlet>
<servlet-name>AdderServlet</servlet-name>
<servlet-class>servlets.AdderServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>PersonalServlet</servlet-name>
<servlet-class>servlets.PersonalServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Selection</servlet-name>
<servlet-class>servlets.Selection</servlet-class>
</servlet>
<servlet>
<servlet-name>ShowSum</servlet-name>
<servlet-class>servlets.ShowSum</servlet-class>
</servlet>
<servlet>
<servlet-name>Weight</servlet-name>
<servlet-class>servlets.Weight</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Checkout</servlet-name>
<url-pattern>/Checkout</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DbServlet</servlet-name>
<url-pattern>/DbServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>PersonalServlet</servlet-name>
<url-pattern>/PersonalServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AdderServlet</servlet-name>
<url-pattern>/AdderServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>GetPreferences</servlet-name>
<url-pattern>/GetPreferences</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Selection</servlet-name>
<url-pattern>/Selection</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ShowSum</servlet-name>
<url-pattern>/ShowSum</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Weight</servlet-name>
<url-pattern>/Weight</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
The project is hosted at
https://github.com/Fernal73/LearnJava/tree/master/Webapps
Regards,
Linus Fernandes.
Re: Embedded Tomcat server starts but unable to connect via browser
on mobile phone.
Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Linus,
On 9/12/19 09:33, LINUS FERNANDES wrote:
> I have set up an embedded Tomcat server program on Arch Linux on
> Termux using OpenJDK version 12.
What version of Tomcat?
> However, I am unable to connect to the server using the browser.
> The same WAR file with a web.xml works fine on Jetty.
>
> Could you point me in the right direction?
You are probably missing a call to Tomcat.getConnector() to create a
default connector.
https://stackoverflow.com/questions/48998387/code-works-with-embedded-ap
ache-tomcat-8-but-not-with-9-whats-changed/49011424#49011424
- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/
iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl16hfgACgkQHPApP6U8
pFjUshAAhft5Xl8JHEn1mR//jMUIczh6IwLzytyXFV4XahSFXxsKDSP2YdIJT0Pi
OeWckF+toejXvlpZ8D2tNjqJeyMJwAijVn9EqVacz/uxXmXCpXUAAfBqqwwwVCwg
uzhWwf1E7CFtXL+jG9YtEcoRWKxXbL2Jsr3zNW1jPlMH/3vdi3jgUtidshn4iovG
q99JUNrMIfHVDafd9n6KDR3jzVBMUBrMHy2nO3G9bw2wVeaFHXv2rgXT5hzTe8oD
w5O3DztKnEIY6LhKILmkrDRBFs6zT1oUX5XDdQmtpzoFfzDzvP6I0EhoUr8aLhOi
f8W35Y1R0gAd0XG1KhwNlNXXwVtKztYGVAtwkhvzwTt5XCM2nDjRt4wpakw5XkoX
VBJBrhn0X5D/iICrU0TbnJqHwfmoTpwji0ISTfVSCzmy2V36sfVE0ud/DhlxIEhO
CWBTpsYlBrRs2/kpeskqzsDQ/XxdVU6vZ34YfbYmJHdK3UBkCeo8wdK4CgrN4pTb
7pyY0u9tNZPMnpkyaPtauB2GSlMGdEGRHtIOXZpJU0mUmvQ5OAXGprAFnx6Vif2I
TL+GWFv/yLn8AVB/Jp2wRDeplCmz6Qt2aoaH+KpfDC7vvNC3F+OtOdLVsH9ipPEV
lXH1C2xtFaUuNqi/Q+a0Qj3HGgwTSYc0TjB6oRXDiuAutSQL2DI=
=MBh6
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org