启动servlet上下文监听器但无法启动应用程序index.jsp(主页)

时间:2013-03-26 08:35:09

标签: java jsp servlets

我的web.xml文件代码

<welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<listener>
    <listener-class>com.vts.action.Server</listener-class>
</listener>

Server.java代码....

public class Server extends HttpServlet implements ServletContextListener {
    private static final long serialVersionUID = 1L;

    Socket clientsocket;
    ServerSocket socket = null;
    int PORT = 9090;

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        System.out.println("ServletContextListener destroyed");

    }
       @Override
       public void contextInitialized(ServletContextEvent arg0) 
        {
           // hear code create socket server and accept multiple client connection and                        
              String via gps and save string in database is working correctly 
        }
}

BUT 现在我的问题是我想接受通过gps在后台运行的继续字符串

但是index.jsp页面没有启动,认为这是我的欢迎文件。我不确定我的web.xml中的监听器配置是对还是错......请给出建议

谢谢&amp;此致

克里希纳肯特

1 个答案:

答案 0 :(得分:0)

感谢回复,最后我得到了解决方案...... 我使用TCP连接在服务器端使用线程,并使用contextListner方法创建两个java类MyListerner.java

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    System.out.println("ServletContextListener destroyed");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    executorService.submit(new RunClassOnDeployment(arg0.getServletContext()));
}

在contextInitialized中调用server.java(带有线程的TCP连接)

vtsDataDao vtsData ;
ServletContext myServletContext; // in case you need the servelet context

public server(ServletContext sc) {
       myServletContext = sc;
}
@Override
public void run() {
    ServerSocket serverSocket = null;
    try {
        // Create the server socket.
        serverSocket = new ServerSocket(9090);
       } catch (IOException ioe) {
        System.out.println("Could not create server socket at 9090. Quitting.");
    }
    System.out.println("Listening for clients on 9090...");
    while (true) {
        try {
            Socket clientSocket = serverSocket.accept();
            try{
                DataInputStream is = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream()));
                while (true) 
                   {
                    byte[] byteData = receiveData(is);
                    String frameData = new String(byteData).trim();
                    System.out.println("Incoming String's:-"+frameData);
                    new vtsDataDao().sendInputFrame(frameData);
                   }//end while
               }catch(Exception e){

               }//end ctry catch                
        } catch (IOException ioe) {
            System.out
                    .println("Exception encountered on accept. Ignoring. Stack Trace :");
            ioe.printStackTrace();
        }
    }
}
  
    

**注意: - 在上面的类我使用两个方法1. receiveData(DataInputStream is)用于读取i / p数据并返回VTS Data String和sendInputFrame(frameData);

  

WEB.XML

    <listener>
    <listener-class>com.vts.action.MyListener</listener-class>
</listener>