Cra*_*ger 12 java glassfish java-ee-6
更新:在撰写本文之后一年,请参阅我关于此主题的博客文章:http://blog.ringerc.id.au/2012/07/java-ee-7-needs-improvements-in-app.html
...有关此主题的Java EE 7规划讨论的参考.
我主要编写了一个小型Java EE 6应用程序,并且正在使用适当的动态配置界面替换硬编码的首选项.
我不确定 - 或者更具体地说,在哪里 - 存储设置.这里必须有一些显而易见的,"标准"的方式来做到这一点的预期"只是工作"跨越各种框架和容器,但对我的生活,我不能找到它.
我想要的是一种加载和存储设置的简单方法,一种适用于不同应用服务器和操作系统的设置,不需要用户进行任何配置,并且实际上正常工作.Java Preferences API是理想的 - 但在Glassfish 3.1下似乎已经破解了.
存储配置的选项理论上包括:
这似乎是一个基本要求,在容器可能为您提供您可能需要的所有核心服务的环境中得到很好的照顾 - 但所有这些方法都存在问题.
glassfish中的一个错误呈现(1)不可行,并且在任何情况下,Glassfish Web管理员用户界面都没有任何方法来配置上下文参数,因此您必须使用`asadmin'和一些不太可爱的命令行语法来执行此操作.上下文参数只能通过ServletContext访问 - 在JSF2,JAX-RS和原始servlet等框架之间无法以一致的方式访问它 - 但至少Seam Servlet处理它.
什么似乎是GlassFish的另一个错误 是部署应用程序和Glassfish之间的库版本冲突(2)休息.首选项后端无法将首选项刷新到磁盘,因此重新启动应用程序服务器时,存储的首选项数据将丢失.Java Preferences API似乎也被认为是J2SE /桌面的东西,尽管它包含在Java EE 6规范中.
(3)可能有效 - 但是没有办法知道你的应用程序在文件系统上的读/写访问权限以及它应该在哪里.你不能使这个可配置,因为它成为一个鸡和蛋的问题.可以应用各种特定于平台的猜测,但在存在SecurityManager时会中断.
(4)会起作用,但它正在飞行.它要求运行JavaDB服务并强制用户确保正确配置应用服务器中的JDBC和池资源.对于一项简单的工作而言,这是一项庞大而复杂的工作,实体建模无论如何都不适合偏好存储,因为它主要是关键/价值结构.
(5)可以工作,但要求用户知道将配置文件放在哪里可以在各种不同的应用服务器下找到它.它还使应用程序很难提供任何类型的配置UI,因为它无法找到配置文件的本地路径或打开它进行写入,尤其是在存在SecurityManager的情况下.
(6)也可以工作,但强制用户在配置应用程序之前配置配置系统.毋庸置疑,考虑到部署应用程序和创建资源的相对复杂性,对于那些还不了解Glassfish/EE的用户来说,这并不会让我感到兴奋.
那么......你如何处理选项的配置和存储?您是否找到了一种方法,让您"只是这样做"而无需用户配置任何内容以允许您的应用程序存储其配置?
首选项 API 的问题是由于在应用程序的 war 中包含 jaxb 和 stax 实现 jar 引起的,由 jersey-json 拉入。排除这些内容(因为它们无论如何都是由应用服务器提供的),首选项 API 恢复正常运行。
看起来带有用于设置的自定义 UI 的首选项 API 似乎是最好的方法。
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |