壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8640|回复: 26

[OAF] OAF二次开发step by step(一)--OAF开发环境的配置

    [复制链接]
发表于 2008/2/29 16:57:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本文档适合于OAF初学者阅读。
  OAF是Oracle Application Framework的简写。
  本文档的内容适合于
      在EBS11i.5.10下使用JDev9.0.3 with OA Extension
      在EBS r12.0.3下使用JDev10.1.33 with OA Extension
  所进行的OAF二次开发参考之用。
  在11.5.10中,OAF开发基于Oracle Jdeveloper 9.0.3,我使用的版本其在metalink上的Patch Number:4573517
  在R12中,OAF开发基于Oracle Jdeveloper 10.1.33,我使用的版本其在metalink上的Patch Number:6509325
  具体的版本的区分,详见下面的metalink文档。
How to find the correct version of JDeveloper to use with eBusiness Suite 11i or Release 12.rar(45.1 KB)
  获取了相应的工具安装文件的压缩包后,直接解压即可。
  比如,我在R12下开发使用p5856648_R12_GENERIC.zip,将其解压到D盘的p5856648_R12_GENERIC目录下,其下包含三个子目录:jdevbin、jdevdoc、
jdevhome。其中jdevbin中是jdeveloper10g的程序文件和OAF的类库,jdevdoc中存放Javadoc手册和OAF培训文档,jdevhome存放oaf用户文件和虚拟的oaf环
境。
  Jdevdoc目录下的文档结构如下:
D:\p5856648_R12_GENERIC\jdevdoc\index.htm                     打开教程文档
D:\p5856648_R12_GENERIC\jdevdoc\javadoc\fwk\public\index.html 包含OA Framework Javadoc
D:\p5856648_R12_GENERIC\jdevdoc\javadoc\aolj\index.html       包含AOL/J的Javadoc
           注:AOL/J类似于Form平台下的AOL,其实现方式升级为Java。
        D:\p5856648_R12_GENERIC\jdevdoc\javadoc\bc4j\index.html       包含BC4J的Javadoc
           注:BC4J为Business Component for java的简写。
        D:\p5856648_R12_GENERIC\jdevdoc\javadoc\uix\index.html        包含UIX的Javadoc
           注:UIX为UI extended的简写。
        D:\p5856648_R12_GENERIC\jdevdoc\javadoc\jdbc\index.html       包含Oracle JDBC API Reference的Javadoc。
        D:\p5856648_R12_GENERIC\jdevdoc\WebHelp\devguide\devguide.htm 包含OAF的开发指南。
        D:\p5856648_R12_GENERIC\jdevdoc\WebHelp\persguide             包含OAF个性化指南。
        D:\p5856648_R12_GENERIC\jdevdoc\WebHelp\toolbox               包含OAF 官方实例教程。
  解压后,需要配置环境变量来指定你所用来进行开发工作的工作目录。
        在Windows2000/XP环境下配置环境变量JDEV_USER_HOME。
        右键点击“我的电脑”,选择“属性”,选择“系统属性”,“高级”标签页
        选择“环境变量”,在打开的对话框中,从“用户变量…”选择“新建”,新建“JDEV_USER_HOME”,
        变量值为“D:\p5856648_R12_GENERIC\jdevhome\jdev”。
        设置此变量后,在每次启动开发工具的时候,会将该路径下的文件和子目录自动加载到新建的jpr中去。
  需要dbc文件来连接应用环境
        使用ftp工具登录到需要做开发的应用环境,切换到路径$FND_SECURE(在R12 demo环境中,该路径
为/u01/vis/inst/apps/VIS_www/appl/fnd/12.0.0/secure/VIS.dbc)下,下载应用相对应的dbc文件。并放置到
        D:\p5856648_R12_GENERIC\jdevhome\jdev\dec_files\secure目录下。
  为方便使用,可以在D:\p5856648_R12_GENERIC\jdevbin\jdeveloper.exe上右键,选择“创建快捷方式”,并将改快捷方式放置到桌面。
  OAF开发环境的配置工作到这里就基本完成了,此时建立的是一个空环境,此时你可以观察在D:\p6509325_R12_GENERIC\jdevhome\jdev目录下的
myclasses和myhtml子目录基本上处于空闲状态。
  一般来说,还需要在进行二次开发之前,初始化配置好的开发环境。
  在官方的英文教程中,提供的Toolbox的例子可以做为初始化的样例文件。
  双击上面所创建的快捷方式,运行Jdeveloper后,在Jdeveloper中选择菜单File>Open,打开D:\p5856648_R12_GENERIC\jdevhome\jdev下的toolbox.jws
。由于jws中文件版本的变化,在除此运行时会提示你migrate,选择yes,待migrate完毕后,即可打开toolbox工作空间。  
  此时,需要登录到EBS应用环境中去,并且需要系统管理员的职责,在R12中新建一个应用用户或使用已有的用户,将职责OA Framework ToolBox
Tutorial(职责关键字:FWK_TBX_TUTORIAL)和OA Framework Toolbox Tutorial Labs(职责关键字:FWK_TOOLBOX_TUTORIAL_LABS)指定给该用户。OAF在
连接应用环境时只校验用户、密码极其所属的职责权限,而不在乎在开发时使用的是哪个用户、哪个职责。
  在toolbox.jws下的Tutorial.jpr选择菜单Tools>Project Properties…,或者在其上右键选择Project Properties…,在弹出的Project Properities对
话框中展开Oracle Application节点,选择Runtime Connection,配置DBC File Name,将其指向刚才从应用服务器上下载的.dbc文件,用户名和密码填前
面指定了相应职责的用户的信息。Responsibility中Application Short Name和Responsibility Key分别配置为ICX和FWK_TBX_TUTORIAL,与指定到该用户
的职责的属性相对应。从这里可以看出,OAF的开发比FORM开发与应用层的联系更加紧密,一个projects均与应用环境中的一个职责关联。使用该OAF功能的
用户必须具有相应的职责权限。完成以上设置后,再对LabSolution.jpr进行相同的设置。再点击Jdeveloper中System Navigator中的Connections标签页,
右键Database节点,选择New Database Connection…,为该project新建一个数据库连接,该连接必须与应用和前面下载的dbc文件中指向的数据库相对应
。在Tutorial.jpr上右键,选择Business Components节点,设置Business Components的Connection属性。并对LabSolutions.jpr属性也做相同配置。
  完成上述配置后,选取toolbox.jws,选择Run>Rebuild toolbox.jws,应该得到0 errors。此时可再去观察D:\p6509325_R12_GENERIC\jdevhome\jdev目
录下的myclasses和myhtml子目录中的内容。需要看运行效果的话,展开Tutorial.jpr下的Web Content文件夹,选定test_fwktutorial.jsp,选择Run>Run
test_fwktutorial.jsp。
附件:
How to find the correct version of JDeveloper to use with eBusiness Suite 11i or Release 12.rar
[时间:2008-2-29 16:59 - 下载次数:0]

后续阅读:
http://www.erp100.com/131/viewspace-6759925.html  OAF二次开发step by step(二)--二次开发的环境的配置
http://www.erp100.com/131/viewspace-6759997.html  OAF二次开发step by step(三)--对具体的BC4J对象的客户化

[ 本帖最后由 atomic79 于 2008-3-4 14:29 编辑 ]
发表于 2008/2/29 20:35:23 | 显示全部楼层
欢迎楼主把Metalink上的内容转帖过来,
鼓励:/hanx
发表于 2008/3/3 09:15:42 | 显示全部楼层
真是费心了,可要好好学一学了
 楼主| 发表于 2008/3/4 14:20:10 | 显示全部楼层
有朋友在MSN问我,按照我的介绍做了之后,运行的时候报错,总是提示Could not find the main class,program will exit。这问题一般是由于Jdev的Embeded Oc4j的启动时路径不对而导致失败。出现这种问题,一般都是p4573517_11i_GENERIC.zip解压时的路径错误导致,解压的时候,如果要自己命名路径,不要有中文、空格或者".",否则即使你把目录改名了,但是OC4J运行仍旧会报错。出现这种情况的话,重新解压到正确路径,改环境变量,然后按照我帖子里的步骤再配置即可。我解压的时候一般都是直接用rar的解压到D:\p4573517_11i_GENERIC目录,从来没出过问题的。这点大家注意一下。

[ 本帖最后由 atomic79 于 2008-3-6 00:46 编辑 ]
发表于 2008/3/13 16:53:06 | 显示全部楼层
新手,刚开始学这个。顶下
发表于 2008/5/30 13:50:21 | 显示全部楼层
study now,thanks !
发表于 2008/6/2 16:11:41 | 显示全部楼层
支持一下楼主,很负责的
 楼主| 发表于 2008/6/2 19:05:19 | 显示全部楼层
发表于 2008/7/2 13:21:16 | 显示全部楼层
原帖由 atomic79 于 2008-3-4 14:20 发表
有朋友在MSN问我,按照我的介绍做了之后,运行的时候报错,总是提示Could not find the main class,program will exit。这问题一般是由于Jdev的Embeded Oc4j的启动时路径不对而导致失败。出现这种问题,一般都是p457 ...


我重新解压设置后还是提示:Could not find the main class,program will exit,不知道还有没有什么其它的原因产生这个问题呢?
 楼主| 发表于 2008/7/2 20:25:19 | 显示全部楼层
没出现过中文路径?路径中没空格?
如果还有问题的话,那我就没见过了。
发表于 2009/8/19 15:14:20 | 显示全部楼层
收益了。。。。呵呵
发表于 2009/8/21 10:18:26 | 显示全部楼层
11# xwy1985s


按你的步骤之后,想打开看下效果,结果浏览器显示


500 Internal Server Errororacle.apps.fnd.cache.CacheException
        at oracle.apps.fnd.cache.AppsCache.get(AppsCache.java:228)
        at oracle.apps.fnd.profiles.Profiles.getProfileOption(Profiles.java:1485)
        at oracle.apps.fnd.profiles.Profiles.getProfile(Profiles.java:354)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.getSpecificProfileFromDB(ExtendedProfileStore.java:211)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.getSpecificProfile(ExtendedProfileStore.java:171)
        at oracle.apps.fnd.profiles.ExtendedProfileStore.getProfile(ExtendedProfileStore.java:148)
        at oracle.apps.fnd.common.logging.DebugEventManager.configureUsingDatabaseValues(DebugEventManager.java:1259)
        at oracle.apps.fnd.common.logging.DebugEventManager.configureLogging(DebugEventManager.java:1114)
        at oracle.apps.fnd.common.logging.DebugEventManager.internalReinit(DebugEventManager.java:1083)
        at oracle.apps.fnd.common.logging.DebugEventManager.reInitialize(DebugEventManager.java:1050)
        at oracle.apps.fnd.common.logging.DebugEventManager.reInitialize(DebugEventManager.java:1037)
        at oracle.apps.fnd.common.AppsLog.reInitialize(AppsLog.java:595)
        at oracle.apps.fnd.common.AppsContext.initLog(AppsContext.java:941)
        at oracle.apps.fnd.common.AppsContext.initializeContext(AppsContext.java:926)
        at oracle.apps.fnd.common.AppsContext.initializeContext(AppsContext.java:891)
        at oracle.apps.fnd.common.WebAppsContext.<init>(WebAppsContext.java:1027)
        at oracle.apps.fnd.common.WebRequestUtil.validateContext(WebRequestUtil.java:223)
        at _OAErrorPage._jspService(_OAErrorPage.java:66)
        [/OAErrorPage.jsp]
        at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.3.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
        at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462)
        at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594)
        at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher.java:259)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher.java:51)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher.java:193)
        at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:198)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.EvermindPageContext.handlePageThrowable(EvermindPageContext.java:847)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.EvermindPageContext.handlePageException(EvermindPageContext.java:813)
        at _test__fwktutorial._jspService(_test__fwktutorial.java:104)
        [/test_fwktutorial.jsp]
        at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.3.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)
        at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:462)
        at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:594)
        at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:518)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:713)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:122)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:111)
        at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
        at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:239)
        at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:34)
        at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:880)
        at com.evermind[Oracle Containers for J2EE 10g (10.1.3.3.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:298)
        at java.lang.Thread.run(Thread.java:595)
Caused by: oracle.apps.jtf.base.resources.FrameworkException: Error in IAS Cache: java.lang.NullPointerException: null Connection
        at oracle.apps.jtf.cache.IASCacheProvider.get(IASCacheProvider.java:712)
        at oracle.apps.jtf.cache.CacheManager.getInternal(CacheManager.java:4802)
        at oracle.apps.jtf.cache.CacheManager.get(CacheManager.java:4624)
        at oracle.apps.fnd.cache.AppsCache.get(AppsCache.java:216)
        ... 50 more
Caused by: oracle.apps.jtf.base.resources.FrameworkException:
An exception occurred in the method CacheAccess.get
null
The base exception is:
null Connection
        at oracle.apps.jtf.base.resources.FrameworkException.convertException(FrameworkException.java:607)
        at oracle.apps.jtf.base.resources.FrameworkException.addException(FrameworkException.java:585)
        at oracle.apps.jtf.base.resources.FrameworkException.<init>(FrameworkException.java:66)
        at oracle.apps.jtf.base.resources.FrameworkException.<init>(FrameworkException.java:88)
        at oracle.apps.jtf.base.resources.FrameworkException.<init>(FrameworkException.java:202)
        at oracle.apps.jtf.base.resources.FrameworkException.<init>(FrameworkException.java:218)
        at oracle.apps.jtf.base.resources.FrameworkException.<init>(FrameworkException.java:249)
        ... 54 more
不知道是什么原因,能否解释下,可能我这个问题太白痴了,但没办法,先谢谢了。。
 楼主| 发表于 2009/8/21 17:29:28 | 显示全部楼层
The base exception is:
null Connection

检查你的数据库连接已经project properties中的数据库连接的设置
发表于 2009/8/24 16:19:27 | 显示全部楼层
好的,谢谢
发表于 2009/8/25 11:21:24 | 显示全部楼层
呵呵 谢谢分享啊~~
发表于 2009/10/12 16:26:32 | 显示全部楼层
恩,这是我看到的说得比较清楚的一帖,自己明白不难,要让别人也明白就不简单了,不错!
发表于 2010/5/2 20:05:24 | 显示全部楼层
回复 12# xwy1985s


    请问12楼的问题解决了吗?是如何解决的?谢谢!
发表于 2010/5/14 16:37:15 | 显示全部楼层
好东西就要顶啊!!顶出个顺序来
发表于 2010/5/27 07:38:05 | 显示全部楼层
谢谢楼主的辛勤劳动。
发表于 2010/12/9 22:22:59 | 显示全部楼层
多谢楼主!顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 20:42 , Processed in 0.024851 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表