I have a problem.
When I start weblogic 8.1 with terracotta 2.7.3 and I use a Java Application to get remote EJB oject from weblogic.
I get an error message :
java.rmi.MarshalException: CORBA MARSHAL 1398079699 Maybe; nested exception is:
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Serializable readObject method failed internally vmcid: SUN minor code: 211 completed: Maybe
I try to modify instrumented-classes in tc-cofig.xml and add serialVersionUID in my EJB code, but it is not work.
Have any solution can fix it?
I know terracotta 2.7.3 is older, but I can't use newer version because our weblogic version is 8.1
Here is tc-config.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-4.xsd">
<!-- Tell DSO where the Terracotta server can be found. -->
<servers>
<server host="xxx.xxx.xxx.xxx" name="server1">
<data>%(user.home)/terracotta-2.7.3/server-data</data>
<logs>%(user.home)/terracotta-2.7.3/server-logs</logs>
<l2-group-port>9530</l2-group-port>
</server>
<server host="yyy.yyy.yyy.yyy" name="server2">
<data>%(user.home)/terracotta-2.7.3/server-data</data>
<logs>%(user.home)/terracotta-2.7.3/server-logs</logs>
<l2-group-port>9530</l2-group-port>
</server>
<ha>
<mode>networked-active-passive</mode>
<networked-active-passive>
<election-time>5</election-time>
</networked-active-passive>
</ha>
</servers>
<tc-properties>
<property name="some.property.name" value="true"/>
<property name="some.other.property.name" value="true"/>
<property name="still.another.property.name" value="1024"/>
<property name="l1.healthcheck.l2.ping.enabled" value="true" />
<property name="l1.healthcheck.l2.ping.idletime" value="5000" />
<property name="l1.healthcheck.l2.ping.interval" value="1000" />
<property name="l1.healthcheck.l2.ping.probes" value="3" />
<property name="l1.healthcheck.l2.socketConnect" value="true" />
<property name="l1.healthcheck.l2.socketConnectTimeout" value="5" />
<property name="l1.healthcheck.l2.socketConnectCount" value="10" />
<property name="l2.nha.tcgroupcomm.reconnect.enabled" value="true"/>
<property name="l2.nha.tcgroupcomm.reconnect.timeout" value="2000"/>
<property name="l2.l1reconnect.enabled" value="true"/>
<property name="l2.l1reconnect.timeout.millis" value="2000"/>
</tc-properties>
<!-- Tell DSO where to put the generated client logs -->
<clients>
<logs>%(user.home)/terracotta-2.7.3/client-logs</logs>
</clients>
<application>
<dso>
<!-- The following declarations tells DSO which classes should be instrumented to
allow sharing. When the app runs under DSO, shared instances of these classes will
broadcast changes in their state.
A good idiom when writing an app that you intend to cluster via TC DSO is to group the
classes you wish to share under a single package (although if you follow the MVC pattern
this tends to happen naturally) - this way the list of classes you wish to instrument
can be concise -->
<instrumented-classes>
<!-- Start by including all classes for instrumentation.
It's more efficient to instrument only those classes that
hold shared roots or are part of a shared root's graph -->
<include>
<class-expression>*..*</class-expression>
</include>
<!-- Exclude weblogic internals to improve performance of webapp loading. -->
<exclude>weblogic..*</exclude>
<exclude>com.rsa..*</exclude>
<exclude>javax.ejb..*</exclude>
<exclude>com.asus.rma.ejb..*</exclude>
<exclude>com.asus.sub.report.ejb..*</exclude>
<exclude>com.asus.rma.web.ejb..*</exclude>
<exclude>com.asus.sub.dao.ejb..*</exclude>
<exclude>com.asus.rma.remote.ejb..*</exclude>
<exclude>com.asus.sub.maintain.ejb..*</exclude>
<exclude>com.asus.eparts.inventory.ejb..*</exclude>
<exclude>com.asus.eparts.order.ejb..*</exclude>
</instrumented-classes>
<additional-boot-jar-classes>
<include>java.util.Locale</include>
</additional-boot-jar-classes>
<transient-fields>
<field-name>org.apache.struts.action.ActionForm.servlet</field-name>
</transient-fields>
<!-- Declare which web application context names should use DSO sessions -->
<web-applications>
<web-application>rmaweb</web-application>
<web-application>eSupport</web-application>
<web-application>eService</web-application>
<web-application>repair</web-application>
</web-applications>
</dso>
</application>
</tc:tc-config>