我总是将Jave EE 6框架用于Web应用程序。所以我不确定我要做的是正确的。我需要创建一个具有数据库访问权限的本机客户端命令行应用程序。如此简单的带有JDBC的Java Project就可以完成这项工作。但是db访问的要求包括连接池,并发句柄和事务......现在,项目的需求最终构建了一个Web界面,但首先它将首先构建一个命令行应用程序。这就是我在思考框架的时候。我喜欢Java EE 6.那么java EE 6在这里是正确的选择吗?我可以使用java EE 6开发本机客户端应用程序,然后再添加一个Web模块吗?
我正在使用Netbeans 7.0 btw
答案 0 :(得分:2)
您可以在具有main()
类的独立客户端应用程序中完美地使用JPA作为入口点。只需将JPA JAR添加到buildpath / classpath,并将persistence.xml
配置为使用RESOURCE_LOCAL
事务类型。您可以在EclipseLink Wiki - Running JPA Outside Container中找到启动示例。这是相关内容的摘录:
<persistence-unit name="LocalPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="javax.persistence.jdbc.user" value="scott"/>
<property name="javax.persistence.jdbc.password" value="tiger"/>
</properties>
</persistence-unit>
通过将客户端项目添加为Web项目的模块,您可以在Web项目中重用具有JPA模型和最终DAO的客户端项目。例如,在Eclipse上,您只需通过 Java Build Path&gt;将客户端项目添加到Web项目的构建路径中。项目&gt;添加并配置部署程序集,使其最终成为/WEB-INF/lib
中的JAR。
最后,在您的Web项目中,您可以拥有另一个persistence.xml
,它基本上指向客户端项目的JAR文件并覆盖事务类型。
<persistence-unit name="WebPersistenceUnit" transaction-type="JTA">
<jta-data-source>jdbc/DataSourceName</jta-data-source>
<jar-file>lib/JavaProject.jar</jar-file>
</persistence-unit>
这样您就不需要在persistence.xml
中重复模型类。
答案 1 :(得分:1)
嗯,JavaEE是不同框架(EJB,JSF,JAXP,JAXB,WS,...)的汇编。并非所有这些都需要功能齐全的应用服务器。
这实际上取决于您的要求(以及您对不同框架的了解),但考虑到Web模块请求,以下方法可能有用:
如果您的应用程序变得越来越复杂或者您需要其他功能(例如使用JPA进行持久性,使用JTA进行事务控制或使用像JSF这样的Web框架),您可以考虑使用应用程序服务器。
答案 2 :(得分:1)
Java EE 6中有一些“视图”技术:Web应用程序和应用程序客户端。 Web应用程序是用于Java EE 6的最常见的视图技术,但您可以创建EJB和实体类的“本机命令行”客户端。
您可以在JSR-000316 Java Platform, Enterprise Edition 6 Specification 6.0 Final Release的“EE.10应用程序客户端”部分阅读有关应用程序客户端的信息。
采用应用程序客户端的主要障碍之一是将它们部署到大量客户端的桌面上。 GlassFish implementation of the Java EE 6 spec包含features that help lower these burdens。
答案 3 :(得分:0)
这并不意味着构建本机客户端应用程序。您正在寻找的是Swing或RCP。