线程安全如何在使用EJB3的JavaEE环境中嵌入第三方代码
我正在编写一个在GlassFish 2.1.1上运行的web应用程序。这个应用程序实际上只包含一个无状态会话bean,它使用来自第三方库的类。这些类的实例是在运行时创建大量自管理线程的服务。我在EJB限制中读到,在EJB中创建线程不是一个好主意
我对JavaEE和EJB还很陌生,但我想知道如何使用在EJB环境中没有为EJB开发的第三方LIB。我想知道如何在我的JavaEE应用程序中以节省的方式使用EJB嵌入这个简单的第三方服务
我唯一的想法是在servlet中实例化服务,并通过方法将实例调用传递给EJB。这样会更好吗
提前谢谢 亚历克斯
关于我的项目的更多细节:
我必须使用的库肯定不是为EJB容器设计的。然而,我别无选择。我也改变了我的设计,我试着简单地解释一下。 我的Web应用程序的主要目的是处理作业。基本上,它类似于CI服务器hudson。作业是其他的,然后构建任务。但是,这些作业可以通过web GUI启动。如果用户按下开始按钮,则数据库表中只有一个状态为insert的条目。数据库表用作执行队列。另一个bean,一个TimerBean,会定期检查数据库,并调用一个enginge,它是我的第三方库来处理这个任务。作业处理与客户端分离,不需要任何事务
- 它是否在方法调用之间保持状态? 是的,我必须保留当前工作才能取消执行。我用一个静态变量解决了这个问题。我知道这也是我不应该在EJB中做的事情,但EJB永远不会用于集群李>
- 它能访问文件、打开连接吗? 第三方库读取和写入文件李>
- 它是否使用共享资源(如类)同步线程 变量?我不知道第三方图书馆的内部结构,但我想,是的李>
共 (0) 个答案