`

nutch UI 多台机子部署有关jetty配置servlet的问题

阅读更多

我们jetty是一个小型的web服务器,可以嵌入到程序当中去,著名有hadoop,nutch,hertriex.等。

在部署nutch的UI的时候程序一直报 “ClassNotFundException”.检查了好久,发现是webapps/task/web.xml。

这里面我配置了几个servlet。

 

2、nutch的分布式部署的时候。在namenode机子上所拷贝的webapps(里面有所有的jsp)。当同步到其它几台机子上的时候,webapps同时也拷贝了进去。所以我在启动hadoop的时候,hadoop中也有jetty.那么它会默认的去寻找web.xml中所配置的servlet.找不到当然要报错了。

3、解决办法 :

     (1):把webapps/task/web.xml所配置的几个servlet注释掉。

     (2):servlet的配置映射放到程序到中去。

 

     public void startWebadmin() {
        ServletServer server = new ServletServer();
        String warPath = "/webapps/task";
        String fullWarPath = System.getProperty("user.dir") + warPath;
        try {
            //ServletHttpContext context = (ServletHttpContext) server.addWebApplication("/", "web");
            server.addContext(fullWarPath, "/task");
            server.addServlet("com.xp.***Servlet", "/task/***servlet");
            server.start();
        } catch (IOException e1) {
            e1.printStackTrace();
        } catch (Exception e1) {
            e1.printStackTrace();

        }
    }

 4、下面在看一个小例子 :

package com.rupeng;

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

public class AddServlet extends HttpServlet {
       protected void service(HttpServletRequest req, HttpServletResponse resp)
               throws ServletException, IOException {
       String s1 = req.getParameter("number1");
       String s2 = req.getParameter("number2");
       Integer n1 = Integer.parseInt(s1);
       Integer n2 = Integer.parseInt(s2);
       Integer n3 = n1 + n2;
       resp.getOutputStream().println(n3);
    }
}


add.htm代码如下:
<html>
<head>
</head>
<body>
<form action="/add" method="post">
num1:<input type="text" name="number1"/>
+
num2:<input type="text" name="number2"/>
<input type="submit"/>
</form>
</body>
</html>

StartServlet.java代码如下:
package com.xp;

import org.mortbay.http.SocketListener;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.ServletHttpContext;

public class StartServer {

public static void main(String[] args) {
  
  Server server = new Server();
  try {
      SocketListener listener = new SocketListener();
      listener.setPort(8080);
      server.addListener(listener);
      ServletHttpContext context = (ServletHttpContext) server.addWebApplication("/", "web");
      context.addServlet("/add", "com.xp.AddServlet");
      server.start();
         } catch (Exception e) {
        e.printStackTrace();
      }
  }
}

5、看来还是对jetty不太熟悉阿。时间都花费了在这个上面,教训阿!牢记!

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics