Question

After successfully able to run a WAR through jetty, I am trying to embed jetty server into my web-application. It is a normal java application consisting servlet. I have used exploded WAR directory (WARless).

But I get the following exception.

    2014-02-22 16:27:08.271:INFO:oejw.StandardDescriptorProcessor:NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
    2014-02-22 16:27:08.319:WARN:oejs.Holder:
    java.lang.ClassNotFoundException: ClientServlet
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:421)
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:383)
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100)
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:79)
    at org.eclipse.jetty.servlet.Holder.doStart(Holder.java:107)
    at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:298)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
    at org.eclipse.jetty.server.Server.doStart(Server.java:282)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
    at com.jetty.RunJetty.main(RunJetty.java:24)
    2014-02-22 16:27:08.321:WARN:/:unavailable

Embedded jetty Server code

    package com.jetty;

    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.webapp.WebAppContext;

    public class RunJetty {

    public RunJetty() {
    }
    public static void main(String[] args) {
    Server server=new Server(8080);
    WebAppContext wac = new WebAppContext();
    wac.setResourceBase("C:/Users/User/j2ee/workspace/CLient1");
    wac.setDescriptor("C:/Users/User/j2ee/workspace/CLient1/WebContent/WEB-INF/web.xml");
    wac.setContextPath("/");
    wac.setParentLoaderPriority(true);
    server.setHandler(wac);
    try {
        server.start();
        server.join();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }

    }

Servlet Code

    package com.jetty;

    import java.io.IOException;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.omg.CORBA.RepositoryIdHelper;

    public class ClientServlet extends HttpServlet {

    private static final long serialVersionUID = 8120079003868426157L;
    private String greeting="Hello World";

    public ClientServlet(){}
    public ClientServlet(String greeting)
    {
    this.greeting=greeting;
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    response.setContentType("text/html");
    response.setStatus(HttpServletResponse.SC_OK);
    response.getWriter().println("<h1>"+greeting+"</h1>");

    }

    }

web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>kajh</display-name>

    <servlet>
    <description></description>
    <display-name>ClientServlet</display-name>
    <servlet-name>ClientServlet</servlet-name>
    <servlet-class>ClientServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>ClientServlet</servlet-name>
    <url-pattern>/ClientServlet</url-pattern>
    </servlet-mapping>
    </web-app>

Additionally, I want to use response.sendRedirect in my servlet. Something like,

      public class ClientServlet extends HttpServlet {

/**
 * 
 */
private static final long serialVersionUID = 8120079003868426157L;
private String greeting="Hello World";

public ClientServlet(){}
public ClientServlet(String greeting)
{
    this.greeting=greeting;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    response.setContentType("text/html");
    response.sendRedirect("http://localhost:8080/CLient1/index.html");

}
}

Please help! I am stuck on this like forever. Thank you in advance!

Also I am adding the folder structure of my application to have a better understanding

enter image description here

Was it helpful?

Solution

I think the servlet-class should be

<servlet-class>com.jetty.ClientServlet</servlet-class>

Edit: Made it show the codeformat also.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top