Dre*_*ken 4 java multithreading jax-ws
我通过JAX-WS遇到Web服务问题.如果我在web方法中启动线程,它将在与客户端的连接结束时结束.
例:
@WebMethod(operationName="test")
public boolean test()
{
Thread th = new MyThread();
th.start();
// Thread is running
...
return true;
// Now thread th ends;
}
Run Code Online (Sandbox Code Playgroud)
有没有解决方案让线程运行?
问题是您正在尝试在Java EE应用服务器上启动Thread.手动线程违反了Java EE规范,这就是您遇到问题的原因.在某些应用服务器上,您根本无法启动单独的线程.从规格:
企业bean不得尝试管理线程.企业bean不得尝试启动,停止,暂停或恢复线程,或更改线程的优先级或名称.企业bean不得尝试管理线程组.这些函数是为EJB容器保留的.允许企业bean管理线程会降低容器正确管理运行时环境的能力.
如果需要在单独的线程上完成工作,则需要使用应用服务器提供的工具进行异步工作.一些选项是将数据排队到JMS队列以供MDB处理或者可能使用异步ejb请求(想想在Java EE 6中).