Hello !

I'm using jboss-3.2.3 and have container configuration 'Standard CMP 2.x EntityBean 
with cache invalidation' in distribution file 
<jboss-home>/server//conf/standardjboss.xml. No chandes was made in this 
container-configuration. MYCONF - is a tree that I've been copied from default server 
fileset.

      <container-configuration>
         <container-name>Standard CMP 2.x EntityBean with cache 
invalidation</container-name>
         <call-logging>false</call-logging>
         <invoker-proxy-binding-name>entity-rmi-invoker</invoker-proxy-binding-name>
         <container-interceptors>
            org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor
            org.jboss.ejb.plugins.LogInterceptor
            org.jboss.ejb.plugins.SecurityInterceptor
            org.jboss.ejb.plugins.TxInterceptorCMT
            org.jboss.ejb.plugins.MetricsInterceptor
            org.jboss.ejb.plugins.EntityCreationInterceptor
            org.jboss.ejb.plugins.EntityLockInterceptor
            org.jboss.ejb.plugins.EntityInstanceInterceptor
            org.jboss.ejb.plugins.EntityReentranceInterceptor
            org.jboss.resource.connectionmanager.CachedConnectionInterceptor
            org.jboss.ejb.plugins.EntitySynchronizationInterceptor
            
org.jboss.cache.invalidation.triggers.EntityBeanCacheBatchInvalidatorInterceptor
            org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor
         </container-interceptors>
         <instance-pool>org.jboss.ejb.plugins.EntityInstancePool</instance-pool>
         
<instance-cache>org.jboss.ejb.plugins.InvalidableEntityInstanceCache</instance-cache>
         
<persistence-manager>org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager</persistence-manager>
         
<locking-policy>org.jboss.ejb.plugins.lock.QueuedPessimisticEJBLock</locking-policy>
         <container-cache-conf>
            
<cache-policy>org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy</cache-policy>
            <cache-policy-conf>
               <min-capacity>50</min-capacity>
               <max-capacity>1000000</max-capacity>
               <overager-period>300</overager-period>
               <max-bean-age>600</max-bean-age>
               <resizer-period>400</resizer-period>
               <max-cache-miss-period>60</max-cache-miss-period>
               <min-cache-miss-period>1</min-cache-miss-period>
               <cache-load-factor>0.75</cache-load-factor>
            </cache-policy-conf>
         </container-cache-conf>
         <container-pool-conf>
            100
         </container-pool-conf>
         <commit-option>A</commit-option>
      </container-configuration>

In my application there is a very simple CMP bean which is used for lookup repository 
id by it's name. Code printed below.

package goldbit.telent.tariffer;

import javax.ejb.EntityBean;
import javax.ejb.EntityContext;

/**
 * @ejb.bean name="TrafficRepositoryName"
 *      type="CMP"
 *      cmp-version="2.x"
 *      view-type="local"
 *      jndi-name="TrafficRepositoryNameBean"
 *      primkey-type="String"
 *      primkey-field="name"
 *      schema="traffic_repository"
 *
 * @ejb.persistence table-name="traffic_repository"
 *
 * @jboss.persistence
 *        datasource="java:/TarifferDS"
 *        datasource-mapping="SapDB"
 *        create-table="false"
 *        remove-table="false"
 *
 * @jboss.read-only read-only="true"
 *
 * @jboss.container-configuration
 *        name="Standard CMP 2.x EntityBean with cache invalidation"
 */
public abstract class TrafficRepositoryNameBean implements EntityBean {

    /**
     * @ejb.interface-method
     * @ejb.persistent-field
     * @ejb.persistence column-name="id" sql-type="int"
     * @jboss.method-attributes read-only="true"
     */
    public abstract Integer getId();
    public abstract void setId(Integer id);

    /**
     * @ejb.interface-method
     * @ejb.persistent-field
     * @ejb.persistence column-name="name" sql-type="char"
     * @jboss.method-attributes read-only="true"
     */
    public abstract String getName();
    public abstract void setName(String id);

    public void setEntityContext(EntityContext context) {}
    public void unsetEntityContext() {}
    public void ejbActivate() {}
    public void ejbPassivate() {}
    public void ejbLoad() {}
    public void ejbStore() {}
    public void ejbRemove() {}

}

It's really very simple and do nothing except looking repository ID by name hopefully 
in cache due to container-configuration with commit-option A.

After xdoclet generation I got next configuration:

in EJB-JAR.XML:

      
         <![CDATA[]]>

         <ejb-name>TrafficRepositoryName</ejb-name>

         
<local-home>goldbit.telent.tariffer.TrafficRepositoryNameLocalHome</local-home>
         goldbit.telent.tariffer.TrafficRepositoryNameLocal

         <ejb-class>goldbit.telent.tariffer.TrafficRepositoryNameBean</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.String</prim-key-class>
         False
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>traffic_repository</abstract-schema-name>
         <cmp-field >
            <![CDATA[]]>
            <field-name>id</field-name>
         </cmp-field>
         <cmp-field >
            <![CDATA[]]>
            <field-name>name</field-name>
         </cmp-field>
         <primkey-field>name</primkey-field>

          <!-- Write a file named ejb-finders-TrafficRepositoryNameBean.xml if you 
want to define extra finders. -->
      

in JBOSS.XML:

      
      
         <ejb-name>TrafficRepositoryName</ejb-name>
         <local-jndi-name>TrafficRepositoryNameLocal</local-jndi-name>
         <read-only>true</read-only>
         <configuration-name>Standard CMP 2.x EntityBean with cache 
invalidation</configuration-name>

        <method-attributes>
            
              <method-name>getId</method-name>
              <read-only>true</read-only>
            
            
              <method-name>getName</method-name>
              <read-only>true</read-only>
            
        </method-attributes>

      

in JBOSSCMP-JDBC.XML:

      
         <ejb-name>TrafficRepositoryName</ejb-name>
                 java:/TarifferDS
                 <datasource-mapping>SapDB</datasource-mapping>
         <create-table>false</create-table>
         <remove-table>false</remove-table>
         <read-only>true</read-only>
         <table-name>traffic_repository</table-name>

         <cmp-field>
            <field-name>id</field-name>
            <column-name>id</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>name</field-name>
            <column-name>name</column-name>

        </cmp-field>

<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
      

Ok, then I use my CMP object from some other place in my project:

    private TrafficRepositoryNameLocalHome trafficRepositoryNameHome;

    TrafficRepositoryNameLocal trafficRepository_ =
            trafficRepositoryNameHome.findByPrimaryKey("Repository Name");
    Integer id_ = trafficRepository_.getId();

And that's working very fast. But sometimes I get error from this code:

Error 0: javax.ejb.CreateException: Could not create 
entity:com.sap.dbtech.jdbc.exceptions.DatabaseException: [250]: Duplicate secondary 
key:TRAFFIC_REPOSITORY_UK_I
javax.ejb.CreateException: Could not create 
entity:com.sap.dbtech.jdbc.exceptions.DatabaseException: [250]: Duplicate secondary 
key:TRAFFIC_REPOSITORY_UK_I
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.performInsert(JDBCAbstractCreateCommand.java:303)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractCreateCommand.execute(JDBCAbstractCreateCommand.java:138)
        at 
org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.createEntity(JDBCStoreManager.java:554)
        at 
org.jboss.ejb.plugins.CMPPersistenceManager.createEntity(CMPPersistenceManager.java:208)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.createEntity(CachedConnectionInterceptor.java:269)
        at org.jboss.ejb.EntityContainer.createLocalHome(EntityContainer.java:581)
        at sun.reflect.GeneratedMethodAccessor377.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1043)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:197)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:214)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:89)
        at 
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61)
        at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92)
        at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
        at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483)
        at org.jboss.ejb.Container.invoke(Container.java:720)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:293)
        at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
        at $Proxy299.create(Unknown Source)
        at 
goldbit.telent.tariffer.TrafficRecordsetBean.ejbHomeIsolatedCreate(TrafficRecordsetBean.java:301)
        at sun.reflect.GeneratedMethodAccessor499.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1054)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:197)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:214)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:89)
        at 
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61)
        at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:320)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92)
        at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
        at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483)
        at org.jboss.ejb.Container.invoke(Container.java:720)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:293)
        at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
        at $Proxy299.isolatedCreate(Unknown Source)
        at 
goldbit.telent.tariffer.TrafficRecordsetBean.ejbHomeFetchOrCreate(TrafficRecordsetBean.java:281)
        at sun.reflect.GeneratedMethodAccessor491.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.EntityContainer$ContainerInterceptor.invokeHome(EntityContainer.java:1054)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invokeHome(EntitySynchronizationInterceptor.java:197)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invokeHome(CachedConnectionInterceptor.java:214)
        at 
org.jboss.ejb.plugins.AbstractInterceptor.invokeHome(AbstractInterceptor.java:88)
        at 
org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:89)
        at 
org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:61)
        at 
org.jboss.ejb.plugins.EntityCreationInterceptor.invokeHome(EntityCreationInterceptor.java:28)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:88)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:98)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:92)
        at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:120)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invokeHome(ProxyFactoryFinderInterceptor.java:93)
        at org.jboss.ejb.EntityContainer.internalInvokeHome(EntityContainer.java:483)
        at org.jboss.ejb.Container.invoke(Container.java:720)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invokeHome(BaseLocalProxyFactory.java:293)
        at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
        at $Proxy299.fetchOrCreate(Unknown Source)
        at 
goldbit.telent.tariffer.RecordsetFooterMethodBean.processRecordsetFooterPDU(RecordsetFooterMethodBean.java:45)
        at sun.reflect.GeneratedMethodAccessor490.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:683)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
        at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at 
org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:331)
        at org.jboss.ejb.Container.invoke(Container.java:700)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:375)
        at 
org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:83)
        at $Proxy381.processRecordsetFooterPDU(Unknown Source)
        at goldbit.telent.tariffer.TarifferBean.tariff(TarifferBean.java:131)
        at sun.reflect.GeneratedMethodAccessor379.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:683)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
        at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at 
org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:331)
        at org.jboss.ejb.Container.invoke(Container.java:700)
        at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:375)
        at 
org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:83)
        at $Proxy366.tariff(Unknown Source)
        at 
goldbit.telent.tariffer.mq.MQTrafficConsumerBean.onMessage(MQTrafficConsumerBean.java:56)
        at sun.reflect.GeneratedMethodAccessor369.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at 
org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:460)
        at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:185)
        at 
org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor.invoke(MessageDrivenInstanceInterceptor.java:62)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:240)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128)
        at 
org.jboss.ejb.plugins.RunAsSecurityInterceptor.invoke(RunAsSecurityInterceptor.java:90)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
        at 
org.jboss.ejb.MessageDrivenContainer.internalInvoke(MessageDrivenContainer.java:374)
        at org.jboss.ejb.Container.invoke(Container.java:700)
        at 
org.jboss.ejb.plugins.jms.JMSContainerInvoker.invoke(JMSContainerInvoker.java:824)
        at 
org.jboss.ejb.plugins.jms.JMSContainerInvoker$MessageListenerImpl.onMessage(JMSContainerInvoker.java:1114)
        at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:256)
        at 
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:633)
        at org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:433)
        at org.jboss.mq.SpySession.run(SpySession.java:298)
        at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
        at 
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:732)
        at java.lang.Thread.run(Thread.java:534)

What's wrong whith the container ? It's looking like inserting new record into 
database. But I wrote my bean class to be stict read-only. May be I've missed 
something in configuration ?

Isn't it a bug ?

Thanks in advance for any help! 

Leonid Maksimshin.


View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3831356#3831356

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3831356


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to