我有一个桌面应用程序与嵌入式码头和一些SWING用户界面在Java中。 我想利用AKK将消息从嵌入式jetty servlet发送到我的应用程序类(能够让actor更新传入消息的swing UI)。 据我了解,我需要为整个应用程序提供单个演员系统。问题是处理对它的引用的最佳方法是什么? 我应该做一些包装参考演员系统的单身人士? 由于jetty可能会使用自己的类加载器,所以类加载器可能存在问题吗?保持参考演员系统
保持参考演员系统
回答
一般情况下,您可以决定是否要为每个jvm或每个嵌入式服务器实例或每个Web应用程序创建一个actor系统。大多数普通用例的人都希望每个Web应用程序都有一个演员系统。在这种情况下,他们将子类ServletContextListener
,创建角色系统,然后从ServletContextEvent
获得ServletContext
,并将角色系统添加为属性。然后在servlet和servlet过滤器中,您可以从servlet上下文中查找参与者系统。一般来说,虽然开始一个新项目的人应该看看Play其他Socko网络框架,这些框架可以与Akka开箱即用。
在你的情况下,你正在谈论嵌入servlet容器和询问类加载。 Servlet容器做'最后一个'类加载器语义。如果在战争中akka类不在jar中,我们会期望它们从主应用程序类路径加载。如果你的建筑物有类似maven的东西,你可以将Web项目依赖项的共享库标记为'provided',这样你的war类就可以对它们进行编译,但是它们会被打包到war文件中。然后,如果您的webapp中的类使用这些库类,那么它们可以来自主类路径,它可以与任何未在webapp中运行的代码共享。
如果您实际上只是为了动态重新部署代码而使用Web容器,那么它可能是工作的错误工具。改用一个osgi容器。这里是一些代码的链接,它使用osgi动态重新部署商业逻辑。https://github.com/simbo1905/osgi-extensible有几个很好的osgi企业规范容器,示例代码使用felix,但也有其他的。今天使用servlet容器的唯一原因是使用类似于jsp的技术来提供网页。 Akka具有远程消息传递等功能,并且在不需要servlet容器的情况下可以很好地处理HTML5 websockets。您可以使用在Akka中编写的Socko网络服务器来托管您的akka业务逻辑并使用json向其发送消息,而不会出现整个servlet容器的膨胀。这里是一些代码的链接https://github.com/simbo1905/sprint-planning
- 1. Akka演员系统控制
- 2. 通用Akka演员系统
- 3. 通过Akka演员参考其他演员
- 4. 保持javascript参考
- 5. 保持演示参考活着但无视图给出参考它控制
- 6. libgdx 0.9.7演员命中没有收到演员系统坐标
- 7. 发送一个Akka演员参考json
- 8. 使用父母演员参考
- 9. 获取参考监督嵌套演员
- 10. 如何使用Akka管理参考顶级演员参考
- 11. 如何监控系统演员终止
- 12. 演员系统关闭后的日志
- 13. 远程Akka演员系统的终止
- 14. 演员系统中的数据存储
- 15. 阿卡终结演员系统
- 16. 用例图 - 作为演员的系统
- 17. libgdx理解坐标scene2d演员系统
- 18. Akka无法启动演员系统
- 19. 保持对两个演员的引用
- 20. 传递一个明确的演员作为参考参数(C#)
- 21. 演讲android系统
- 22. Akka:每个演员系统有多少个调度员?
- 23. 演员是与系统进行身体互动的演员,还是让某人做出的演员?
- 24. 使用间接参考查找以前持续存在的Akka演员
- 25. Android 4.4系统,不确定参考__printf_chk
- 26. 输入系统参考问题
- 27. 谷歌地图空间参考系统
- 28. 使用PHP的参考号码系统
- 29. 系统调用的很好的参考
- 30. 支持RavenDB的MVC4会员系统
我不明白你的描述servlet容器在做什么;谁或什么连接并向servlet容器发送什么内容,以及与swing应用程序相关的内容如何? – simbo1905