大家好,我在开发中遇到这样一个问题,我是用javaee做的web开发,用的ssh框架,我想在项目服务器启动结束后开启一个线程接受客户端数据,可是我写了一个类,在web.xml中加上监听,当执行那个类的时候,服务器却不继续启动了,不知道是为什么,希望高手帮忙解决一下,另外,这种在开启服务器后执行某线程的情况,有没有更好的设计方案,谢谢

解决方案 »

  1.   

    那肯定是你写的监听有问题。struts和spring那么多的监听都没让tomcat停止启动。
    检查代码。
      

  2.   

    /**
    * 监听器启动,加载socket服务
    * */
    public void contextInitialized(ServletContextEvent arg0) {
    SocketServer server = new SocketServer();
    server.acceptConnections();
    }
    这是在一个类里写的启动socket服务,acceptConnections()这个方法里启动线程等,然后我再web.xml里这样写的配置
    <!-- 初始化类thread -->
    <listener>
    <listener-class>wst.thread.SocketServer</listener-class>
    <load-on-startup>5</load-on-startup>
    </listener>
    执行之后就一直在等待,过一会
    2009-12-02 12:04:01,031 [main] WARN  [org.springframework.security.config.FilterChainProxyPostProcessor] - Possible error: Filters at position 9 and 10 are both instances of org.springframework.security.intercept.web.FilterSecurityInterceptor
    连接已建立,等待客户端连接......
    然后会服务启动失败,请问这里的流程有问题吗?
      

  3.   

    问题已解决,我再SocketServer 里面直接用了server.accept()是这个线程一直处于阻塞状态,所以服务器就停在这里不执行了,不过我有个疑惑,在web.xml里配的监听不是,有一个监听就启用一个线程吗?这个监听的线程阻塞了是不是应该不影响其他的呢?感谢各位!