众所周知, ADF Essentials是使用Java构建Web应用程序的绝佳框架,它可以自由开发和部署。 您可以在Glassfish(3.1+)服务器上部署ADF Essentials应用程序。 但是,JDeveloper并不带有嵌入式Glassfish服务器,而是带有嵌入式Weblogic服务器。 在本文中,我们将讨论在ADF Essentials应用程序开发期间何时使用集成的Weblogic服务器以及何时应使用外部Glassfish服务器。
你需要什么
- JDeveloper 11gR2(11.1.2.3.0)或更高版本。
- Glassfish 3.1或更高版本 。
一旦安装了上述软件,就可以开始创建ADF Essentials应用程序。 在线上有大量文档 :书籍, 教程和视频可以为您提供帮助。 我的建议是尝试在开发过程中使用集成的Weblogic服务器,以便您可以直接从JDeveloper调试和运行应用程序。 完成某些功能的开发后,最后在Glassfish服务器上测试开发,如果要开发ADF Essentials应用程序,则这是最可能在生产环境中使用的应用程序服务器。 确保已按照此处所述为ADF Essentials应用程序配置了Glassfish服务器: https : //blogs.oracle.com/shay/entry/deploying_oracle_adf_applications_to
您安装的JDeveloper版本具有内置功能,可将您的应用程序部署到Glassfish服务器。 但是,必须先启动服务器,然后才能部署应用程序。 一种方法是在JDeveloper之外使用Glassfish服务器控件(一旦安装Glassfish,就会安装它们)。 我推荐的方法是使用用于JDeveloper的Glassfish插件,以便您可以直接从IDE启动/停止Glassfish服务器! 该插件是由Shay Shmeltzer创建的,并且1.3版已修改为可以在Linux上运行(对我来说@aa_lopez ),而可以在Mac上运行(对David Aroca而言 )。
该插件可以在help-> check中找到更新 。 此处提供更多信息: https : //blogs.oracle.com/shay/entry/glassfish_extension_for_oracle_jdeveloper 。 如果要对源代码做出贡献,可以在java.net上找到该项目: http : //java.net/projects/jdev-3rd-party-ext/sources/svn-repository/show 。 安装插件后,您的JDeveloper将显示四个新按钮:
表格从左到右:
- 第一个允许您启动Glassfish服务器。
- 第二个让您停止Glassfish服务器。
- 第三个以调试模式启动Glassfish服务器。
- 第四个启动Glassfish服务器Web控制台应用程序。
在开始使用这些新按钮之前,您必须配置Glassfish服务器的路径。 为此,请转到“ 工具”->“首选项”,然后选择“ Glassfish首选项” :
默认情况下,该插件随附Windows OS路径。 因此,如果您使用的是Linux或Mac,则必须更改这些路径才能使插件按钮起作用。 就我而言,我使用的是Linux,因此我更改了路径以匹配安装Glassfish服务器的路径。
注意
我必须在启动命令中添加–verbose选项,否则,Glassfish会立即启动和停止。
Glassfish Home Directory: /home/aalopez/development/glassfish-3.1.2.2/
启动Glassfish命令:
/home/aalopez/development/glassfish-3.1.2.2/glassfish/bin/asadmin start-domain --verbose domain1
停止Glassfish命令:
/home/aalopez/development/glassfish-3.1.2.2/glassfish/bin/asadmin stop-domain domain1
在调试模式命令中启动Glassfish:
/home/aalopez/development/glassfish-3.1.2.2/glassfish/bin/asadmin start-domain --debug=true
Glassfish管理员网址:
http://localhost:4848
完成配置后,就可以开始使用JDeveloper的Glassfish服务器了,只是不要关闭在单击“启动Glassfish”按钮时弹出的窗口。
如何处理Weblogic和Glassfish服务器之间的数据源?
使用集成的Weblogic服务器时,JDeveloper会创建一个数据源来访问数据库。 该数据源具有以下结构:
java:comp/env/jdbc/DATASOURCE_NAME
其中DATASOURCE_NAME是您在配置与数据库的连接时为数据源提供的名称。 问题在于Glassfish服务器使用了另一种结构。 当您在Glassfish服务器Web控制台应用程序中定义数据源时,您可以这样定义它:
jdbc/DATASOURCE_NAME
如果您继续使用Weblogic和Glassfish服务器运行应用程序,则建议使用以下配置,因此不必在每次更改应用程序服务器时都手动更改数据源结构:在Web Content / WEBINF / web上定义资源。 XML文件
<resource-ref><res-ref-name>jdbc/DATASOURCE_NAME</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth><res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
如Java EE网络应用部署描述符版本2.5所述:
The res-ref-name element specifies the name of a resource manager connection factory reference. The name is a JNDI name relative to the java:comp/env context. The name must be unique within a web application.
因此,我们没有定义与jdbc / DATASOURCE_NAME关联的方法,但实际上是在定义java:comp / env / jdbc / DATASOURCE_NAME,它与在应用程序中配置并由Weblogic服务器使用的数据源结构完全匹配。 这实际上是一个好习惯,因为在开发时,您不必担心部署时数据源的结构或名称。 您只需在web.xml部署描述符中定义数据源的结构或名称,然后部署者 (是,进行部署的人员)可以将该结构或名称映射到其他内容。 这是在特定于容器的配置文件中完成的,我们将在后面看到。
创建glassfish-web.xml配置文件。 右键单击Web Content / WEB-INF文件夹,然后选择“ 新建…”选项:
弹出一个窗口,选择“ 常规”类别,然后选择“ 文件”选项:
输入文件名glassfish-web.xml并确保此新文件的路径在WEB-INF文件夹内:
创建文件后,将其打开并输入以下代码:
<?xml version='1.0' encoding='UTF-8' ?>
<glassfish-web-app><context-root>YOUR_APP_NAME</context-root><property name='useBundledJsf' value='true'/><class-loader delegate='false'/><resource-ref><res-ref-name>java:comp/env/jdbc/DATASOURCE_NAME</res-ref-name><jndi-name>jdbc/DATASOURCE_NAME_AT_GLASSFISH</jndi-name></resource-ref>
</glassfish-web-app>
在这里,我在部署时将JDeveloper添加到glassfish-web.xml文件的配置复制了。 我还添加了使我们能够映射数据源的配置。 resource-ref元素是我们将重点放在这篇文章上的内容。 将DATASOURCE_NAME更改为您在web.xml部署描述符中为数据源定义的名称,并将DATASOURCE_NAME_AT_GLASSFISH更改为在Glassfish Web控制台应用程序中定义的名称。
怎么运行的:
- 我们在web.xml部署描述符中将数据源定义为资源。 记住,我们使用的是jdbc / DATASOURCE_NAME结构,但实际上意味着我们使用的是java:comp / env / jdbc / DATASOURCE_NAME
- 我们创建了glassfish-web.xml部署描述符。 这是特定于容器的配置文件,当部署到Glassfish服务器时,JDeveloper会自动创建该文件。 但是,如果文件已经存在,则不会被覆盖。这里我们映射了数据源定义,所以我们告诉Glassfish,当我们在应用程序中寻找java:comp / env / jdbc / DATASOURCE_NAME时,真正的意思是我们在在Glassfish服务器中查找jdbc / DATASOURCE_NAME。
而已。 使用此配置,您不必担心Weblogic和Glassfish服务器之间的数据源配置差异。 快乐的ADF Essentials编码。
参考文献:
- Oracle ADF Essentials 。 Oracle [在线]。可在Internet上找到: http : //www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html [2013年3月24日访问]。
- 将ADF应用程序部署到GlassFish 。 Oracle [在线]。可在Internet上找到: http ://docs.oracle.com/cd/E35521_01/web.111230/e16182/appendix_glassfish.htm#CEGDIGEE [2013年3月28日访问]。
- Java EE:Java EE部署描述符的XML模式 。 Oracle [在线]。 可在Internet上获得: http : //www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html#5 [2013年3月28日访问]。
- web.xml中的resource-ref有什么作用? 。 Oracle [在线]。 在Internet上可用: http : //stackoverflow.com/questions/2887967/what-is-resource-ref-in-web-xml-used-for/2888169#2888169
参考:来自Java和ME博客的JCG合作伙伴 Alexis Lopez的JDeveloper 11gR2的Glassfish插件 。
翻译自: https://www.javacodegeeks.com/2013/04/glassfish-plugin-for-jdeveloper-11gr2.html