0

I have a dynamic web project with a servlet (structure below).

When right-clicking HomeServlet.java --> Run as --> Run on Server --> Tomcat...
It runs fine with the URL: http://localhost:8080/JSTLTest/HomeServlet

When right-clicking JSTLTest --> Run as --> Run on Server --> Tomcat...
I get an error and this URL is used: http://localhost:8080/JSTLTest/

The problem is, i want to deploy it on a server like AWS elastic beanstalk and i guess it doesn't work because he won't use the servlet to start, like:
http://default-environment-9a5exxxd3z.elasticbeanstalk.com/HomeServlet

Is my web.xml wrong?

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">
    <display-name>JSTLTest</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Home</servlet-name>
        <servlet-class>com.journaldev.servlet.HomeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Home</servlet-name>
        <url-pattern>/HomeServlet</url-pattern>
    </servlet-mapping>
</web-app>

Structure:

enter image description here

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Hans
  • 29
  • 7
  • didn't understand the question very well. do you want HomeServlet to run at the start of tomcat? then add `1` to the servlet in web.xml. it will run the `init()` method on tomcat startup – Sharon Ben Asher Aug 31 '15 at 11:52
  • tried that already tomcat still uses http://localhost:8080/JSTLTest/ – Hans Aug 31 '15 at 11:54

1 Answers1

1

Replace

<url-pattern>/HomeServlet</url-pattern>

with

<url-pattern></url-pattern>

The url pattern is the url that added to the the protocol + server + port + context (something like http://localhost:8080/myapp) can be used to access to a particular servlet.

Note the pattern must be empty. The pattern / is the default pattern. So it match all possible patterns (also what you don't like).

Davide Lorenzo MARINO
  • 26,420
  • 4
  • 39
  • 56