部署ADF应用到独立的WebLogic Server全程实录

开发环境:JDeveloper 11.1.1.5 + RCU 11.1.1.5 + WebLogic 10.3.5 + Application Development Runtime 11.1.1.5

我以《Enable Security in a Fusion Web Application》为例来说明如何把该应用发布到独立的WebLogic Server上。

首先要完成该教程,并在JDeveloper中内嵌的WLS上运行成功,开发完成后的Project可以点击这里下载:
SecureApplication_11gPS4.7z

独立的WebLogic Server必须是安装了ADF Runtime Library的,安装方法请参考《
图解安装 Application Development Runtime》。

重要步骤说明:

1. 在JDeveloper中创建指向独立WebLogic Server的连接











2. 修改Application Module的Connection Type为JDBC Data Source

为了简单起见,我把Application Module中LocalConfig和ShareConfig的Connection Type都改成了JDBC Data Source。





3. 在WebLogic Server Console中创建相应的JDBC Data Source




注意,Data Source的JNDI Name要和Application Module中的一致。





4. 修改ViewController Prject的Deployment Profile

说明:这一步不是必须的,只是为了让应用的访问URL开起来更好看一些。


5. 修改Application的Deployment Profile

说明:这一步不是必须的,只是为了让应用的访问URL开起来更好看一些。




这一步的四个选项的含义如下:

(1)Auto Generate and Synchronize weblogic-jdbc.xml Descriptors During Deployment:是否同步weblogic-jdbc.xml中的jdbc连接配置,因为没有使用该文件,所以一般不选中。

(2)Application Policies:一般不覆盖已有的Policy,所以一般不选中。

(3)Credentials:一般应用没有自己的密码,比如Email账号等等,即使有一般也不覆盖已有的Credentials,所以一般不选中。

(4)Users and Groups:应用中的用户和组一般不发布到生产和测试环境中,所以一般不选中。

总之,以上四个选项完全可以通过WLS/EM Console来单独配置,所以一般不需要在发布应用时覆盖已有的配置。


6. 部署 Application

目前ADF应用必须以打成ear包方式部署,不能够以war包方式部署。

直接发布war包,会报一个错误,Caused by: java.lang.ClassNotFoundException: oracle.adf.library.webapp.ResourceServlet。

Oracle JDev小组成员Shay也是这样说的,见参考文献1,看来目前就是这样设计的。

为了简单起见,我这里从JDevleoper中直接把应用发布到Admin Server上。

在生产环境中,不建议这样做,最好打成ear包,然后通过控制台发布。













在Deploy过程中,会询问你MDS Repositories的位置,关于MDS,请参考《
创建基于数据库的MDS》。

如果你没有配置MDS,会显示空白,如下图:




如果你配置了MDS,JDeveloper会自动识别目前有哪些MDS,并自动创建一个MDS partition,使用.ear应用的名字作为partition的名称。

同时,它会使用刚刚创建的MDS Data Source作为MDS database。如下图:


7. 部署时遇到的异常

(1)首次部署时遇到一个异常:

Weblogic Server Exception: weblogic.management.DeploymentException:

[J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: oracle.webcenter.framework, Specification-Version: 11.1.1, exact-match: false].

检查后,发现是weblogic-application.xml多了如下内容,于是去掉。

<library-ref>

<library-name>oracle.webcenter.framework</library-name>

<specification-version>11.1.1</specification-version>

</library-ref>

<library-ref>

<library-name>oracle.webcenter.skin</library-name>

<specification-version>11.1.1</specification-version>

</library-ref>

(2)再次部署,又遇到了一个新的异常:

Weblogic Server Exception: weblogic.application.ModuleException: :oracle.mds.exception.MDSExceptionList:MDS-01329: 无法加载元素 "persistence-config"

检查后,发现是adf-config.xml多了如下内容,于是去掉。

<persistence-config>

<metadata-namespaces>

<namespace path="/persdef/"

metadata-store-usage="WebCenterFileMetadataStore"/>

<namespace path="/xliffBundles/"

metadata-store-usage="WebCenterFileMetadataStore"/>

</metadata-namespaces>

<metadata-store-usages>

<metadata-store-usage id="WebCenterFileMetadataStore"

default-cust-store="true" deploy-target="true">

<metadata-store class-name="oracle.mds.dt.persistence.stores.file.SrcControlFileMetadataStore">

<property name="metadata-path" value="../../mds"/>

</metadata-store>

</metadata-store-usage>

</metadata-store-usages>

</persistence-config>

重新部署,这次终于成功了。

8. 测试

因为这个ADF应用带有安全性,为了将测试的用户部署到独立的WLS上,修改Application的Deployment属性,选中Users and Groups:




重新部署后,会在WebLogic Server Console中看到这些用户。




访问http://localhost:7001/SecureApplication/faces/welcome.jspx。

以不同的用户登录测试,运行效果和部署在JDeveloper内嵌的WebLogic Server一样。

9. 如何把ADF应用发布到Managed Server上?

(1)首先在WLS Console中增加一个Managed Server。

(2)然后扩展ADF Domain,选择EM。

(3)启动Admin Server和Managed Server,访问EM Console,点击“Apply JRF Template” ,此步很重要,一定不要忘了,否则会有些奇怪的错误。

(4)别忘了把Data Source Target到Managed Server上。

(5)通过WLS Console,发布.ear。(通过JDeveloper发布,无法成功,总是报告无法连接)

10. 其它问题

(1)如何访问http://localhost:7001/SecureApplication时自动跳转到welcome.jspx页面?

修改web.xml,增加如下内容:

<welcome-file-list>

<welcome-file>/faces/welcome.jspx</welcome-file>

</welcome-file-list>

注意,由于Context root后面有faces,所以需要加上这个路径,否则无法访问。

(2)如何访问http://localhost:7001/时自动跳转到welcome.jspx页面?

首先修改web.xml如(1),然后修改weblogic.xml如下:

<weblogic-web-app>

<context-root>/</context-root>

</weblogic-web-app>

(3)发现WEB-INF/lib下有很多Jar包,能不能所有应用共享这些包,不要每个Web应用都包含这些Jar包?




经过实验,发现可以去掉,SecureApplication应用运行正常。

Project 下载:
SecureApplication_11gPS4(StandaloneWLS).7z

参考文献:

1. http://jdevshay.wordpress.com/2008/11/14/common_pitfalls_when_deploying/

 

posted on 2015-03-23 16:13  小林子的烂笔头  阅读(632)  评论(0编辑  收藏  举报

导航