Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Jsp form to Servlet jetty embedded

Hi Joakim,
Thank you for providing the example code. I have changed my ServerConnector class accordingly and included asm and annotations-api jars to classpath which were causing classnotfound exception. After making all these changes, I still get HTTP ERROR 404 Problem accessing /. Reason:Not Found. I have uncommented Options for jsp in start.ini and have javax.servlet.jsp-2.2.0.v201112011158.jar in lib/jsp of jetty server. 

My Console looks like this : 
Initializing server...
Starting server...
2013-05-29 09:43:45.308:INFO:oejs.Server:main: jetty-9.0.0.v20130308
2013-05-29 09:43:45.411:INFO:oejpw.PlusConfiguration:main: No Transaction manager found - if your webapp requires one, please configure one.
2013-05-29 09:43:45.425:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
2013-05-29 09:43:45.441:INFO:oejsh.ContextHandler:main: started o.e.j.w.WebAppContext@1ac6103{/,file:/C:/Users/XCB638/svn/test-jetty-webapp/src/main/webapp,AVAILABLE}
2013-05-29 09:43:45.467:INFO:oejs.ServerConnector:main: Started ServerConnector@163b85{HTTP/1.1}{0.0.0.0:8080}
2013-05-29 09:43:57.127:INFO:/:qtp27880366-15: No JSP support.  Check that JSP jars are in lib/jsp and that the JSP option has been specified to start.jar

ServerConnector class:
package com.motorolasolutions.atr.server;

import org.eclipse.jetty.annotations.AnnotationConfiguration;
import org.eclipse.jetty.plus.webapp.EnvConfiguration;
import org.eclipse.jetty.plus.webapp.PlusConfiguration;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.Configuration;
import org.eclipse.jetty.webapp.FragmentConfiguration;
import org.eclipse.jetty.webapp.MetaInfConfiguration;
import org.eclipse.jetty.webapp.TagLibConfiguration;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.webapp.WebInfConfiguration;
import org.eclipse.jetty.webapp.WebXmlConfiguration;

public class ServerConnector
{
@SuppressWarnings("deprecation")
public static void main(String[] args) throws Exception
{
System.out.println("Initializing server...");
final Server server = new Server(8080);
System.out.println("Starting server...");
try
{
WebAppContext context = new WebAppContext();
context.setDescriptor(context+"/WEB-INF/web.xml");
       context.setResourceBase("../test-jetty-webapp/src/main/webapp");
context.setConfigurations(new Configuration[] {
new AnnotationConfiguration(), new WebXmlConfiguration(),
new WebInfConfiguration(), new TagLibConfiguration(),
new PlusConfiguration(), new MetaInfConfiguration(),
new FragmentConfiguration(), new EnvConfiguration() });

context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
server.start();
server.join();
System.out.println("Server running...");
}
catch (Exception e)
{
System.out.println("Failed to start server!");
return;
}

}
}


Thanks & Regards,
Ranjith
MS-MIS, Univ Of Illinois at Chicago.





On Wed, May 29, 2013 at 12:48 AM, Joakim Erdfelt <joakim@xxxxxxxxxxx> wrote:
There are no servlets available on your environment.

Some advice:

System.out.println("Server running...");
while (true)
{
try
{
server.join();
}
catch (InterruptedException e)
{
System.out.println("Server interrupted!");
}
}

That is overkill.
The while(true) loop is not needed.  as server.join() will wait on the current thread (in other words, the main() thread in your case) till the server stops (typically with a Ctrl+C).
Remove that whole block.
Add server.join() on the line after server.start();

ResourceHandler is the most basic and primitive way to serve static content only.

Do this instead, drop the whole ResourceHandler + DefaultHandler and create a WebAppContext instead.
Since you obviously have JSP and Servlet 3.0 concepts, this will be the best choice for you.
You'll need a web.xml (even if its essentially a stub xml).
Then you'll want to specify the appropriate configurations for annotation based servlets on the WebAppContext.
Finally, configure the DefaultServlet to serve static content. (configuring the DefaultServlet can be done in the web.xml or via the override webdefault.xml)

If you want an example of using servlet 3 concepts, like the annotations, look at the example project.

Example of the embedded server start:

The stub web.xml that EmbedMe uses:


--
Joakim Erdfelt <joakim@xxxxxxxxxxx>
Developer advice, services and support
from the Jetty & CometD experts


On Tue, May 28, 2013 at 10:22 PM, Ranjith Koduri <nanikpranjith9@xxxxxxxxx> wrote:
Hi,

I'm get HTTP ERROR: 404
Problem accessing /MainServlet. Reason: Not Found

on submitting home.jsp which I'm accessing through localhost:8080 url. On submit the url changes to localhost:8080/MainServlet and gives me the above mentioned error

This is my project's web.xml

<?xml version="1.0" encoding="UTF-8"?>
id="WebApp_ID" metadata-complete="false" version="3.0">
<display-name>test_new</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>
</web-app>

I'm running Jetty Server in embedded mode using this class ServerConnector

package com.motorolasolutions.atr.server;

import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.webapp.WebAppContext;

import com.motorolasolutions.atr.example.HelloHandler;

public class ServerConnector
{
public static void main(String[] args) throws Exception
{
System.out.println("Initializing server...");
final Server server = new Server(8080);
System.out.println("Starting server...");
try
{

ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setResourceBase(args.length == 2 ? args[1] : ".");
System.out.println(resource_handler.getResourceBase());
resource_handler.setWelcomeFiles(new String[] { "WebContent/home.jsp" });
System.out.println("serving " + resource_handler.getBaseResource());
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler()});
server.setHandler(handlers);
server.start();
}
catch (Exception e)
{
System.out.println("Failed to start server!");
return;
}

System.out.println("Server running...");
while (true)
{
try
{
server.join();
}
catch (InterruptedException e)
{
System.out.println("Server interrupted!");
}
}
}
}

JSP Form - home.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home Page</title>
</head>
<body>
<form action="" method="post">
<input type="text" id="t1">
<input type="submit" id="submit">
</form>
</body>
</html>

Servlet - MainServlet

package com.motorolasolutions.atr.example;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MainServlet
 */
@WebServlet("/MainServlet")
public class MainServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MainServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("In Servlet Post Method");
}

}


On Tue, May 28, 2013 at 6:26 PM, Jan Bartel <janb@xxxxxxxxxxx> wrote:
Ranjith,

There's not really enough info in your post to be able to help you. Can you post again and show your embedding code? Also the html form generated by the jsp. Many times 404 errors are caused by servlets not actually being deployed at the mapping path that you think they are ... try hitting the servlet directly.

Jan


On 29 May 2013 06:21, Ranjith Koduri <nanikpranjith9@xxxxxxxxx> wrote:
I've tried using servlet definition without annotations and I still face the same issue. 

Thanks & Regards,
Ranjith
MS-MIS, Univ Of Illinois at Chicago.





On Tue, May 28, 2013 at 2:03 PM, Ranjith Koduri <nanikpranjith9@xxxxxxxxx> wrote:
Hi,
I'm trying to post values from a Jsp form to a servlet using embedded jetty. I'm using annotations for configuring servlets, unfortunately I'm getting a 404 error once I post jsp form to servlet. Is there any working example of posting a jsp form to servlet using embedded jetty ? 

Thank you.


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users




--
Jan Bartel <janb@xxxxxxxxxxx>
www.webtide.com – Developer advice, services and support
from the Jetty & CometD experts.

_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users



_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users



_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users



Back to the top