S852509769 2022-10-11 17:21 采纳率: 0%
浏览 21
已结题

javaweb项目中listener中启动ice server监听导致tomcat阻塞,无法启动成功

javaweb项目中listener中启动ice server监听导致tomcat阻塞,无法启动成功
web.xml文件配置listener如下:

<listener>
        <listener-class>com.core.listener.IceStartListener</listener-class>
    </listener>

IceStartListener实现:

public class IceStartListener implements ServletContextListener {

    private IceStartThread iceStartThread;
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        application application = new application();
        String iceID = application.getStr_ice_ID();
        String iceNET = application.getStr_ice_NET();
        System.out.println("iceID:"+iceID+",iceNET:"+iceNET);

        if(null == iceStartThread)
        {
            //新建线程类
            iceStartThread=new IceStartThread(iceID,iceNET);
            //启动线程
            iceStartThread.start();
        }

    }

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        if(null!=iceStartThread && !iceStartThread.isInterrupted())
        {
            iceStartThread.interrupt();
        }
    }
}

IceStartThread线程实现类核心代码:


```java
public void startICE(String  strCfg_iceID,String  strCfg_iceNet) {
        int status = 0;
        Ice.Communicator ic = null;
        try {
            ic = Ice.Util.initialize();
            Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints(
                    strCfg_iceID, strCfg_iceNet);
            Ice.Object object = new hsm30InterfaceI();
            adapter.add(object,Ice.Util.stringToIdentity(strCfg_iceID));
            adapter.activate();
            log.info("ICE server:"+strCfg_iceID+"  "+strCfg_iceNet+ "  start OK!");
            ic.waitForShutdown();

        } catch (Ice.LocalException e) {
            e.printStackTrace();
            status = 1;
        } catch (Exception e) {
            System.err.println(e.getMessage());
            status = 1;
        } finally {
            if (ic != null)
                ic.destroy();
        }
        System.exit(status);
    }

启动后阻塞在ic.waitForShutdown();语句中,tomcat就不能再启动。

已经重新启动一个线程来启动ice server,但是tomcat始终起不来。web页面无法正常访问

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月19日
    • 创建了问题 10月11日

    悬赏问题

    • ¥15 目详情-五一模拟赛详情页
    • ¥15 有了解d3和topogram.js库的吗?有偿请教
    • ¥100 任意维数的K均值聚类
    • ¥15 stamps做sbas-insar,时序沉降图怎么画
    • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line