Java Object Cache in EBS

简介: Java Object Cache (Distributed Java Caching) in Oracle E-Business Suite 11i/R12 If you are upgrading your system (or planning...

Java Object Cache (Distributed Java Caching) in Oracle E-Business Suite 11i/R12

If you are upgrading your system (or planning to upgrade) to ATG roll up 4, 5 or 6 or using R12 (12.0.X to 12.1.X); beware of below common intermittent issues around Web Server (Apache/Jserv/OC4J/JVM) for 11.5.10 and R12 
 
Responsibility not visible to users 
-NoCalssDef found error in JVM logs
-Intermittent hang in JVM (Jserv/Apache)
-Intermittent page not found while accessing/login apps ( 500 Internal Server Error)

Most (if not all) of these issues are around Distributed Java Cache feature of JVM in Oracle Apps 11i/R12, before going further let me ask you basic questions around Java Cache

Q. What is significance of wrapper.bin.parameters=-DLONG_RUNNING_JVM=FALSE in jserv.properties ?
Q. Why you need s_java_object_cache_port & s_fnd_cache_port_range in Context File ($SID_hostname.xml) ?
Q. What is $APPLRGF/javacache.log ?

 Good starting point to understand Java Caching in 11i/R12 is to go through Mike Shaw’s post here

(参考链接:)

Lets now understand basics of Java Object Cache (JOC) or Distributed Java Cache which was introduced in apps from ATG RUP 3.

JVM – Java Virtual Machine : to execute Java Code in apps; JServ (for 11i) and OC4J (for R12) .

Caching in JVM: To improve performance, JVM’s cache data they extract from Database before passing it on to User(为了提高性能,JVM在将从数据库内提取的数据传给用户之前,自己先存放在自己的cache中).

Database Invalidation: This feature ensures that when the data in a database is updated, the corresponding cached data in the mid-tier is also updated. This is useful when the updates to the database bypass(绕过) the JVMS for example updates through forms or sqlplus.

Distributed Java Caching: In a multiple JVM environment (multiple JVM on one or more middle tier or Single JVM on multiple Middle tier ), Distributed caching allows one JVM to inform all the other JVMs about updates to any cached data. This ensures consistency of the cached data across all the JVMs.
               The updates and invalidations of the objects in a distributed Component Cache are propagated(传播) to all the other JVMs that are running against the same database..


How data synchronization and invalidations handled in Distributed Java caching : In multi JVM environment;
a) First JVM to come online acts as Master Cache Controller and rest other JVMs as client JVMs .
b) Upon startup, each JVM auto-registers the host it is running on in the database ( table name JTF_PREFAB_WSH_POES_B).
c) The Master cache controller listens for cache invalidation in the port specified by s_java_object_cache_port(default is 12345) and the client JVMs will open client ports taken from the range established by s_fnd_cache_port_range (when specified – Default not set).
d)When an object gets invalidated or replaced in the cache, then invalidation message is sent to all other JVMs via Master Cache Controller.
 

If this Master JVM (acting as Master Cache Controller) dies gracefully or abnormally, then one of client JVM takes role of Master cache Controller (There are couple of Bugs around this issue)

.
Data Partition: This feature allows the cached data to be partitioned based on any partition keys. This is useful for JVMS in hosting environments running against a Virtual Private Database (VPD). The caching framework ensures that the cache data is partitioned based on security group id.

.
How to disable distributed caching or enable local caching ?
Set s_long_running_jvm to false in context (xml) file and run autoconfig . <jms_cache oa_var=”s_long_running_jvm”>false</jms_cache>
This will update wrapper.bin.parameters=-DLONG_RUNNING_JVM to FALSE in jserv.properties

or

set wrapper.bin.parameters=-DCACHEMODE=LOCAL in jserv.properties (default is Distributed)

.
Checking Java Cache from front end
login to URL http://<machinename>:<port> /OA_HTML/jtflogin.jsp
sysadmin/<sysadmin_passwd> Performance -> Components

For Cloned Instances
Nodes registered for Java Caching and the cache configuration details are stoerd in table  JTF_PREFAB_WSH_POES_B, its good idea to truncate this table on cloned instance (If entry contains source instance nodes) and restart Apache to re-register target instance nodes in table JTF_PREFAB_WSH_POES_B


相关阅读:http://docs.oracle.com/cd/B25221_04/web.1013/b14427/joc.htm#sthref706



相关文章
|
7月前
|
Java API 开发工具
Java之API详解之Object类的详细解析(下)
Java之API详解之Object类的详细解析(下)
38 0
|
7月前
|
Java API 开发工具
从零开始学习 Java:简单易懂的入门指南之Runtime、Object(十三)
从零开始学习 Java:简单易懂的入门指南之Runtime、Object(十三)
|
5月前
|
Java
java判断Object对象是否为空demo
java判断Object对象是否为空demo
|
6月前
|
安全 Java 编译器
解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题
解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题
223 0
|
2月前
|
Java 流计算
在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
【2月更文挑战第6天】在Flink实时任务中,POJO(Plain Old Java Object)对象的模式演进可能会引起不兼容的问题
21 3
|
6月前
|
Java
Java常用类--------Object类
Java常用类--------Object类
|
3月前
|
消息中间件 Java Kafka
Kafka - java.lang.VerifyError: Uninitialized object exists on backward branch 193
Kafka - java.lang.VerifyError: Uninitialized object exists on backward branch 193
50 0
|
4月前
|
Java 数据库
Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000
Java【问题记录 04】时间戳类型字符串{Timestamp@15601}2021-07-14 18:56:53.0变成带T的Object类型2021-07-14T10:56:53.000+0000
22 0
|
6月前
|
安全 Java API
Java的第八篇文章——Object类、String类和StringBuilder类
Java的第八篇文章——Object类、String类和StringBuilder类
|
7月前
|
存储 NoSQL Java
Java常用API(一)Object与Objects
Java常用API(一)Object与Objects
33 0