How to create an SBB and set it as chil of a root SBB

78 views
Skip to first unread message

seydou konaté

unread,
Jul 6, 2010, 12:50:44 PM7/6/10
to mobicents-public
Hello every body
I have two Sbb classes and I wanted to use one as child of the other.

below is my sbb-jar.xml


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sbb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD JAIN SLEE SBB 1.0//EN" "http://java.sun.com/dtd/slee-sbb-jar_1_0.dtd">
<sbb-jar>
<sbb>
            <sbb-name>MyB2BSbb</sbb-name>
            <sbb-vendor>org.mobicents</sbb-vendor>
            <sbb-version>1.0</sbb-version>
            <sbb-classes>
                <sbb-abstract-class>
                    <sbb-abstract-class-name>org.mobicents.slee.example.sip11.b2b.MyB2BSbb</sbb-abstract-class-name>
                    
                    <cmp-field>
                            <cmp-field-name>incomingDialog</cmp-field-name>
                    </cmp-field>
                    <cmp-field>
                            <cmp-field-name>outgoingDialog</cmp-field-name>
                    </cmp-field>
                    
                </sbb-abstract-class>
            </sbb-classes>
</sbb>
        <sbb>
            <sbb-name>MyRegistrarSbb</sbb-name>
            <sbb-vendor>org.oml.dsi</sbb-vendor>
            <sbb-version>1.0</sbb-version>
            <sbb-ref>
                <description>reference to calls traiter</description>
                <sbb-name>MyB2BSbb</sbb-name>
                <sbb-vendor>org.mobicents</sbb-vendor>
                <sbb-version>1.0</sbb-version>
                <sbb-alias>MySbbChild</sbb-alias>
            </sbb-ref>
            <sbb-classes>
                <description>my own sbb classe abstract</description>
                <sbb-abstract-class>
                    <description>my abstract classe definition</description>
                    <sbb-abstract-class-name>org.mobicents.slee.example.sip11.b2b.MyRegistrarSbb</sbb-abstract-class-name>
                    <cmp-field>
                        <description>mon champ de test</description>
                        <cmp-field-name>creatorName</cmp-field-name>
                    </cmp-field>
                    <cmp-field>
                        <description>mon champ de test2</description>
                        <cmp-field-name>creatorMotherName</cmp-field-name>
                    </cmp-field>
                    <!--
                    <cmp-field>
                        <cmp-field-name>outgoingDialog</cmp-field-name>
                    </cmp-field>
                    -->
                    <get-child-relation-method>
                        <description>get my sbb child object</description>
                        <sbb-alias-ref>MySbbChild</sbb-alias-ref>
                        <get-child-relation-method-name>getSimpleSip11B2BTestSbbChildRelation</get-child-relation-method-name>
                        <default-priority>0</default-priority>
                    </get-child-relation-method>
                </sbb-abstract-class>
                <sbb-local-interface>
                    <description>My sbb child</description>
                    <sbb-local-interface-name>org.mobicents.slee.example.sip11.b2b.MySbbLocalObject</sbb-local-interface-name>
                </sbb-local-interface>
            </sbb-classes>
            <event event-direction="Receive" initial-event="True">
                <event-name>ServiceStartedEvent</event-name>
                <event-type-ref>
                    <event-type-name>javax.slee.serviceactivity.ServiceStartedEvent</event-type-name>
                    <event-type-vendor>javax.slee</event-type-vendor>
                    <event-type-version>1.1</event-type-version>
                </event-type-ref>
                <initial-event-select variable="ActivityContext" />
            </event>
            <!--hundle registration-->
            <event event-direction="Receive" initial-event="True">
                    <event-name>RegisterEvent</event-name>
                    <event-type-ref>
                            <event-type-name>javax.sip.message.Request.REGISTER</event-type-name>
                            <event-type-vendor>net.java.slee</event-type-vendor>
                            <event-type-version>1.2</event-type-version>
                    </event-type-ref>
                    <initial-event-select variable="ActivityContext" />
            </event>
            <event event-direction="Receive" initial-event="False">
                <event-name>InviteEvent</event-name>
                <event-type-ref>
                        <event-type-name>javax.sip.message.Request.INVITE</event-type-name>
                        <event-type-vendor>net.java.slee</event-type-vendor>
                        <event-type-version>1.2</event-type-version>
                </event-type-ref>
                <initial-event-select variable="ActivityContext" />
            </event>
            <event event-direction="Receive" initial-event="False">
                <event-name>1xxResponse</event-name>
                <event-type-ref>
                        <event-type-name>javax.sip.message.Response.PROVISIONAL</event-type-name>
                        <event-type-vendor>net.java.slee</event-type-vendor>
                        <event-type-version>1.2</event-type-version>
                </event-type-ref>
            </event>
            <event event-direction="Receive" initial-event="False">
                <event-name>2xxResponse</event-name>
                <event-type-ref>
                        <event-type-name>javax.sip.message.Response.SUCCESS</event-type-name>
                        <event-type-vendor>net.java.slee</event-type-vendor>
                        <event-type-version>1.2</event-type-version>
                </event-type-ref>
            </event>
            <event event-direction="Receive" initial-event="False">
                <event-name>Bye</event-name>
                <event-type-ref>
                    <event-type-name>
                            javax.sip.Dialog.BYE
                    </event-type-name>
                    <event-type-vendor>net.java.slee</event-type-vendor>
                    <event-type-version>1.2</event-type-version>
                </event-type-ref>
            </event>
            <event event-direction="Receive" initial-event="False">
                <event-name>Cancel</event-name>
                <event-type-ref>
                    <event-type-name>javax.sip.message.Request.CANCEL</event-type-name>
                    <event-type-vendor>net.java.slee</event-type-vendor>
                    <event-type-version>1.2</event-type-version>
                </event-type-ref>
            </event>
            <env-entry>
                <env-entry-name>isProxy</env-entry-name>
                <env-entry-type>java.lang.String</env-entry-type>
                <env-entry-value>WHATEVER_IT_HAS_TO_BE_SET</env-entry-value>
            </env-entry>
            <resource-adaptor-type-binding>
                    <resource-adaptor-type-ref>
                            <resource-adaptor-type-name>JAIN SIP</resource-adaptor-type-name>
                            <resource-adaptor-type-vendor>javax.sip</resource-adaptor-type-vendor>
                            <resource-adaptor-type-version>1.2</resource-adaptor-type-version>
                    </resource-adaptor-type-ref>
                    <activity-context-interface-factory-name>slee/resources/jainsip/1.2/acifactory</activity-context-interface-factory-name>
                    <resource-adaptor-entity-binding>
                            <resource-adaptor-object-name>slee/resources/jainsip/1.2/provider</resource-adaptor-object-name>
                            <resource-adaptor-entity-link>SipRA</resource-adaptor-entity-link>
                    </resource-adaptor-entity-binding>
            </resource-adaptor-type-binding>
        </sbb>
</sbb-jar>


When deploying my project I having the following error in the log

16:34:31,750 INFO  [TableMetadata] table found: PUBLIC.SLEE_PE_ADDRESSPROFILECMP
_167136107
16:34:31,750 INFO  [TableMetadata] columns: [tablename, profilename]
16:34:31,750 INFO  [TableMetadata] foreign keys: []
16:34:31,750 INFO  [TableMetadata] indexes: [sys_idx_73]
16:34:31,750 INFO  [SchemaUpdate] schema update complete
16:34:31,750 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.fa
ctory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.p
kgs=org.jboss.naming:org.jnp.interfaces}
16:34:31,796 INFO  [DeploymentMBeanImpl] Installed ProfileSpecificationID[name=A
ddressProfileSpec,vendor=javax.slee,version=1.0]
16:34:31,890 INFO  [Ejb3Configuration] Processing PersistenceUnitInfo [
        name: JSLEEProfiles152456043
        ...]
16:34:31,890 ERROR [Ejb3Configuration] Container is providing a null Persistence
UnitRootUrl: discovery impossible
16:34:31,906 WARN  [Ejb3Configuration] Persistence provider caller does not impl
ement the EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is nu
ll.
16:34:31,906 WARN  [Ejb3Configuration] Overriding hibernate.transaction.factory_
class is dangerous, this might break the EJB3 specification implementation
16:34:31,906 INFO  [AnnotationBinder] Binding entity from annotated class: javax
.slee.profile.AddressProfile11CMP_PE
16:34:31,906 INFO  [EntityBinder] Bind entity javax.slee.profile.AddressProfile1
1CMP_PE on table SLEE_PE_AddressProfile11CMP_152456043
16:34:31,921 INFO  [HibernateSearchEventListenerRegister] Unable to find org.hib
ernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Searc
h is not enabled.
16:34:31,921 INFO  [ConnectionProviderFactory] Initializing connection provider:
 org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
16:34:31,921 INFO  [InjectedDataSourceConnectionProvider] Using provided datasou
rce
16:34:31,937 INFO  [SettingsFactory] RDBMS: HSQL Database Engine, version: 1.8.0

16:34:31,937 INFO  [SettingsFactory] JDBC driver: HSQL Database Engine Driver, v
ersion: 1.8.0
16:34:31,937 INFO  [Dialect] Using dialect: org.hibernate.dialect.HSQLDialect
16:34:31,937 INFO  [TransactionFactoryFactory] Transaction strategy: org.hiberna
te.ejb.transaction.JoinableCMTTransactionFactory
16:34:31,937 INFO  [TransactionManagerLookupFactory] instantiating TransactionMa
nagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
16:34:31,937 INFO  [TransactionManagerLookupFactory] instantiated TransactionMan
agerLookup
16:34:31,953 INFO  [SettingsFactory] Automatic flush during beforeCompletion():
disabled
16:34:31,953 INFO  [SettingsFactory] Automatic session close at end of transacti
on: disabled
16:34:31,953 INFO  [SettingsFactory] Scrollable result sets: enabled
16:34:31,953 INFO  [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
16:34:31,953 INFO  [SettingsFactory] Connection release mode: auto
16:34:31,953 INFO  [SettingsFactory] Default batch fetch size: 1
16:34:31,953 INFO  [SettingsFactory] Generate SQL with comments: disabled
16:34:31,953 INFO  [SettingsFactory] Order SQL updates by primary key: disabled
16:34:31,953 INFO  [SettingsFactory] Order SQL inserts for batching: disabled
16:34:31,968 INFO  [SettingsFactory] Query translator: org.hibernate.hql.ast.AST
QueryTranslatorFactory
16:34:31,968 INFO  [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
16:34:31,968 INFO  [SettingsFactory] Query language substitutions: {}
16:34:31,968 INFO  [SettingsFactory] JPA-QL strict compliance: enabled
16:34:31,968 INFO  [SettingsFactory] Second-level cache: enabled
16:34:31,968 INFO  [SettingsFactory] Query cache: disabled
16:34:31,968 INFO  [SettingsFactory] Cache region factory : org.hibernate.cache.
impl.bridge.RegionFactoryCacheProviderBridge
16:34:31,968 INFO  [RegionFactoryCacheProviderBridge] Cache provider: org.hibern
ate.cache.HashtableCacheProvider
16:34:31,984 INFO  [SettingsFactory] Optimize cache for minimal puts: disabled
16:34:31,984 INFO  [SettingsFactory] Cache region prefix: persistence.unit:unitN
ame=#JSLEEProfiles152456043
16:34:31,984 INFO  [SettingsFactory] Structured second-level cache entries: disa
bled
16:34:31,984 INFO  [SettingsFactory] Statistics: disabled
16:34:31,984 INFO  [SettingsFactory] Deleted entity synthetic identifier rollbac
k: disabled
16:34:31,984 INFO  [SettingsFactory] Default entity-mode: pojo
16:34:31,984 INFO  [SettingsFactory] Named query checking : enabled
16:34:32,000 INFO  [SessionFactoryImpl] building session factory
16:34:32,000 INFO  [SessionFactoryObjectFactory] Factory name: persistence.unit:
unitName=#JSLEEProfiles152456043
16:34:32,000 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.fa
ctory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.p
kgs=org.jboss.naming:org.jnp.interfaces}
16:34:32,015 INFO  [SessionFactoryObjectFactory] Bound factory to JNDI name: per
sistence.unit:unitName=#JSLEEProfiles152456043
16:34:32,015 WARN  [SessionFactoryObjectFactory] InitialContext did not implemen
t EventContext
16:34:32,015 INFO  [SchemaUpdate] Running hbm2ddl schema update
16:34:32,015 INFO  [SchemaUpdate] fetching database metadata
16:34:32,015 INFO  [SchemaUpdate] updating schema
16:34:32,031 INFO  [TableMetadata] table found: PUBLIC.SLEE_PE_ADDRESSPROFILE11C
MP_152456043
16:34:32,031 INFO  [TableMetadata] columns: [tablename, profilename, caddress]
16:34:32,031 INFO  [TableMetadata] foreign keys: []
16:34:32,031 INFO  [TableMetadata] indexes: [sys_idx_78, sys_idx_sys_ct_77_80]
16:34:32,031 INFO  [SchemaUpdate] schema update complete
16:34:32,031 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.fa
ctory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.p
kgs=org.jboss.naming:org.jnp.interfaces}
16:34:32,062 INFO  [DeploymentMBeanImpl] Installed ProfileSpecificationID[name=A
ddressProfileSpec,vendor=javax.slee,version=1.1]
16:34:32,093 INFO  [Ejb3Configuration] Processing PersistenceUnitInfo [
        name: JSLEEProfiles1974387886
        ...]
16:34:32,093 ERROR [Ejb3Configuration] Container is providing a null Persistence
UnitRootUrl: discovery impossible
16:34:32,109 WARN  [Ejb3Configuration] Persistence provider caller does not impl
ement the EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is nu
ll.
16:34:32,109 WARN  [Ejb3Configuration] Overriding hibernate.transaction.factory_
class is dangerous, this might break the EJB3 specification implementation
16:34:32,109 INFO  [AnnotationBinder] Binding entity from annotated class: javax
.slee.profile.ResourceInfoProfileCMP_PE
16:34:32,109 INFO  [EntityBinder] Bind entity javax.slee.profile.ResourceInfoPro
fileCMP_PE on table SLEE_PE_ResourceInfoProfileCMP_1974387886
16:34:32,125 INFO  [HibernateSearchEventListenerRegister] Unable to find org.hib
ernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Searc
h is not enabled.
16:34:32,125 INFO  [ConnectionProviderFactory] Initializing connection provider:
 org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
16:34:32,125 INFO  [InjectedDataSourceConnectionProvider] Using provided datasou
rce
16:34:32,125 INFO  [SettingsFactory] RDBMS: HSQL Database Engine, version: 1.8.0

16:34:32,140 INFO  [SettingsFactory] JDBC driver: HSQL Database Engine Driver, v
ersion: 1.8.0
16:34:32,140 INFO  [Dialect] Using dialect: org.hibernate.dialect.HSQLDialect
16:34:32,140 INFO  [TransactionFactoryFactory] Transaction strategy: org.hiberna
te.ejb.transaction.JoinableCMTTransactionFactory
16:34:32,140 INFO  [TransactionManagerLookupFactory] instantiating TransactionMa
nagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
16:34:32,140 INFO  [TransactionManagerLookupFactory] instantiated TransactionMan
agerLookup
16:34:32,140 INFO  [SettingsFactory] Automatic flush during beforeCompletion():
disabled
16:34:32,156 INFO  [SettingsFactory] Automatic session close at end of transacti
on: disabled
16:34:32,156 INFO  [SettingsFactory] Scrollable result sets: enabled
16:34:32,156 INFO  [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
16:34:32,156 INFO  [SettingsFactory] Connection release mode: auto
16:34:32,156 INFO  [SettingsFactory] Default batch fetch size: 1
16:34:32,156 INFO  [SettingsFactory] Generate SQL with comments: disabled
16:34:32,156 INFO  [SettingsFactory] Order SQL updates by primary key: disabled
16:34:32,156 INFO  [SettingsFactory] Order SQL inserts for batching: disabled
16:34:32,156 INFO  [SettingsFactory] Query translator: org.hibernate.hql.ast.AST
QueryTranslatorFactory
16:34:32,171 INFO  [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
16:34:32,171 INFO  [SettingsFactory] Query language substitutions: {}
16:34:32,171 INFO  [SettingsFactory] JPA-QL strict compliance: enabled
16:34:32,171 INFO  [SettingsFactory] Second-level cache: enabled
16:34:32,171 INFO  [SettingsFactory] Query cache: disabled
16:34:32,171 INFO  [SettingsFactory] Cache region factory : org.hibernate.cache.
impl.bridge.RegionFactoryCacheProviderBridge
16:34:32,171 INFO  [RegionFactoryCacheProviderBridge] Cache provider: org.hibern
ate.cache.HashtableCacheProvider
16:34:32,171 INFO  [SettingsFactory] Optimize cache for minimal puts: disabled
16:34:32,187 INFO  [SettingsFactory] Cache region prefix: persistence.unit:unitN
ame=#JSLEEProfiles1974387886
16:34:32,187 INFO  [SettingsFactory] Structured second-level cache entries: disa
bled
16:34:32,187 INFO  [SettingsFactory] Statistics: disabled
16:34:32,187 INFO  [SettingsFactory] Deleted entity synthetic identifier rollbac
k: disabled
16:34:32,187 INFO  [SettingsFactory] Default entity-mode: pojo
16:34:32,187 INFO  [SettingsFactory] Named query checking : enabled
16:34:32,203 INFO  [SessionFactoryImpl] building session factory
16:34:32,203 INFO  [SessionFactoryObjectFactory] Factory name: persistence.unit:
unitName=#JSLEEProfiles1974387886
16:34:32,203 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.fa
ctory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.p
kgs=org.jboss.naming:org.jnp.interfaces}
16:34:32,203 INFO  [SessionFactoryObjectFactory] Bound factory to JNDI name: per
sistence.unit:unitName=#JSLEEProfiles1974387886
16:34:32,218 WARN  [SessionFactoryObjectFactory] InitialContext did not implemen
t EventContext
16:34:32,218 INFO  [SchemaUpdate] Running hbm2ddl schema update
16:34:32,218 INFO  [SchemaUpdate] fetching database metadata
16:34:32,218 INFO  [SchemaUpdate] updating schema
16:34:32,218 INFO  [TableMetadata] table found: PUBLIC.SLEE_PE_RESOURCEINFOPROFI
LECMP_1974387886
16:34:32,234 INFO  [TableMetadata] columns: [tablename, profilename, cinfo]
16:34:32,234 INFO  [TableMetadata] foreign keys: []
16:34:32,234 INFO  [TableMetadata] indexes: [sys_idx_81]
16:34:32,234 INFO  [SchemaUpdate] schema update complete
16:34:32,234 INFO  [NamingHelper] JNDI InitialContext properties:{java.naming.fa
ctory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.p
kgs=org.jboss.naming:org.jnp.interfaces}
16:34:32,250 INFO  [DeploymentMBeanImpl] Installed ProfileSpecificationID[name=R
esourceInfoProfileSpec,vendor=javax.slee,version=1.0]
16:34:32,265 INFO  [DeploymentMBeanImpl] Installed DeployableUnitID[url=file:/C:
ents-du.jar/]
16:34:32,515 INFO  [DeploymentMBeanImpl] Installing DeployableUnitID[url=file:/C
b2b-DU-2.0.0.CR1.jar/]
16:34:32,890 ERROR [SbbComponentValidator] SbbID[name=MyB2BSbb,vendor=org.mobice
nts,version=1.0] : violates sbb constraints, the sbb abstract class declares mor
e abstract methods than SLEE is bound to implement: [getSbbPriority[], isIdentic
al[interface javax.slee.SbbLocalObject], setSbbPriority[byte], remove[]]
16:34:32,890 INFO  [DeployableUnitBuilderImpl] Undeploying deployable unit due t
o building error
javax.slee.management.DeploymentException: failed to validate SbbID[name=MyB2BSb
b,vendor=org.mobicents,version=1.0]
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:248)
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:51)
        at org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl.insta
ll(DeploymentMBeanImpl.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:157)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
        at org.mobicents.slee.container.deployment.jboss.DeploymentManager.sciAc
tion(DeploymentManager.java:370)
        at org.mobicents.slee.container.deployment.jboss.DeploymentManager.insta
llDeployableUnit(DeploymentManager.java:181)
        at org.mobicents.slee.container.deployment.jboss.SLEESubDeployer.start(S
LEESubDeployer.java:278)
        at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.callSubDep
loyer(SLEEDeployer.java:131)
        at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.sleeIsRunn
ing(SLEEDeployer.java:138)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor.set
SleeState(SleeStateJMXMonitor.java:105)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor.acc
ess$200(SleeStateJMXMonitor.java:26)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor$1.r
un(SleeStateJMXMonitor.java:124)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.slee.management.DeploymentException: SbbID[name=MyB2BSbb,vendor
=org.mobicents,version=1.0] validation failed, check logs for errors found
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:238)
        ... 20 more
16:34:34,140 ERROR [SLEESubDeployer]
javax.management.MBeanException
        at org.jboss.mx.interceptor.ReflectedDispatcher.handleInvocationExceptio
ns(ReflectedDispatcher.java:184)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:165)
        at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
        at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
        at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:264)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
        at org.mobicents.slee.container.deployment.jboss.DeploymentManager.sciAc
tion(DeploymentManager.java:370)
        at org.mobicents.slee.container.deployment.jboss.DeploymentManager.insta
llDeployableUnit(DeploymentManager.java:181)
        at org.mobicents.slee.container.deployment.jboss.SLEESubDeployer.start(S
LEESubDeployer.java:278)
        at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.callSubDep
loyer(SLEEDeployer.java:131)
        at org.mobicents.slee.container.deployment.jboss.SLEEDeployer.sleeIsRunn
ing(SLEEDeployer.java:138)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor.set
SleeState(SleeStateJMXMonitor.java:105)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor.acc
ess$200(SleeStateJMXMonitor.java:26)
        at org.mobicents.slee.container.deployment.jboss.SleeStateJMXMonitor$1.r
un(SleeStateJMXMonitor.java:124)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.slee.management.DeploymentException: Failure encountered during
 deploy process.
        at org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl.insta
ll(DeploymentMBeanImpl.java:297)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:157)
        ... 13 more
Caused by: javax.slee.management.DeploymentException: failed to validate SbbID[n
ame=MyB2BSbb,vendor=org.mobicents,version=1.0]
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:248)
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:51)
        at org.mobicents.slee.container.management.jmx.DeploymentMBeanImpl.insta
ll(DeploymentMBeanImpl.java:141)
        ... 18 more
Caused by: javax.slee.management.DeploymentException: SbbID[name=MyB2BSbb,vendor
=org.mobicents,version=1.0] validation failed, check logs for errors found
        at org.mobicents.slee.container.component.deployment.DeployableUnitBuild
erImpl.build(DeployableUnitBuilderImpl.java:238)
        ... 20 more
16:34:34,234 INFO  [SLEEDeployer] ><><><><><><><><>< Deployment of JAIN SLEE dep
loyable-units complete. No failures. ><><><><><><><><><

Eduardo Martins

unread,
Jul 6, 2010, 1:06:34 PM7/6/10
to mobicent...@googlegroups.com
I guess you're declaring javax.slee.SbbLocalObject methods in the sbb
abstract class, which is not good. Show us your sbb code.

-- Eduardo

-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
http://emmartins.blogspot.com
http://www.redhat.com/solutions/telco

seydou konaté

unread,
Jul 6, 2010, 1:10:56 PM7/6/10
to mobicent...@googlegroups.com
Root Sbb code

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mobicents.slee.example.sip11.b2b;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sip.RequestEvent;
import javax.sip.ResponseEvent;
import javax.slee.ActivityContextInterface;
import javax.slee.ChildRelation;
import javax.slee.CreateException;
import javax.slee.RolledBackContext;
import javax.slee.SbbContext;
import javax.slee.facilities.Tracer;
import javax.slee.serviceactivity.ServiceStartedEvent;
import net.java.slee.resource.sip.CancelRequestEvent;
import net.java.slee.resource.sip.SipActivityContextInterfaceFactory;
import net.java.slee.resource.sip.SleeSipProvider;
/**
 *
 * @author Administrateur
 */
public abstract class MyRegistrarSbb implements javax.slee.Sbb{
    private SbbContext sbbContext;
    private static Tracer tracer;
    private SipActivityContextInterfaceFactory sipActivityContextInterfaceFactory;
    private SleeSipProvider sipProvider;
    //Service start event/////////////
    public void onServiceStartedEvent(ServiceStartedEvent event, ActivityContextInterface aci) {
//        sbbContext.getTracer(getClass().getSimpleName()).info("*********My Registrar is now good****************");
        getChildSbb().serviceStartedEvent(event, aci);
    }
//registrar
    public void onRegisterEvent(RequestEvent event, ActivityContextInterface aci) {
        getChildSbb().registerEvent(event, aci);
    }
    // Initial request
    public void onInviteEvent(RequestEvent event, ActivityContextInterface aci) {
        getChildSbb().inviteEvent(event, aci);
    }
    // Responses
    public void on1xxResponse(ResponseEvent event, ActivityContextInterface aci) {
        getChildSbb().n1xxResponse(event, aci);
    }
    public void on2xxResponse(ResponseEvent event, ActivityContextInterface aci) {
        getChildSbb().n2xxResponse(event, aci);
    }
    public void onBye(RequestEvent event, ActivityContextInterface aci) {
        getChildSbb().bye(event, aci);
    }
    public void onCancel(CancelRequestEvent event, ActivityContextInterface aci) {
        getChildSbb().cancel(event, aci);
    }
    public void setSbbContext(SbbContext context) {
        this.sbbContext = context;
        if (tracer == null) {
            tracer = sbbContext.getTracer(MyB2BSbb.class.getSimpleName());
        }
        try {
            Context ctx = (Context) new InitialContext().lookup("java:comp/env");
            sipActivityContextInterfaceFactory = (SipActivityContextInterfaceFactory) ctx.lookup("slee/resources/jainsip/1.2/acifactory");
            sipProvider = (SleeSipProvider) ctx.lookup("slee/resources/jainsip/1.2/provider");
            initMyB2BSbbLocalObject();
            //ds=(DataSource) new InitialContext().lookup("java:/MySqlDS");
            //tracer.info("*********Data Source:"+ds);
        } catch (NamingException e) {
            tracer.severe(e.getMessage(), e);
        }
    }
    private MyB2BSbb getSimpleSip11B2BTestSbbLocalObject() throws CreateException {
        final ChildRelation relation=getSimpleSip11B2BTestSbbChildRelation();
        if(relation!=null && relation.isEmpty()) {
            return (MyB2BSbb) relation.create();
        } else {
            return (MyB2BSbb) relation.iterator().next();
        }
    }
    private MyB2BSbb getChildSbb() {
        try {
            return getSimpleSip11B2BTestSbbLocalObject();
        } catch (CreateException ex) {
            tracer.severe("********************erreur:"+ex+"******************");
            Logger.getLogger(MyRegistrarSbb.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    private void initMyB2BSbbLocalObject() {
        try {
            MyB2BSbb.setTracer(tracer);
            getChildSbb().setSipProvider(sipProvider);
            getChildSbb().setSipActivityContextInterfaceFactory(sipActivityContextInterfaceFactory);
        } catch (Exception ex) {
            tracer.severe("********************erreur:"+ex+"******************");
            Logger.getLogger(MyRegistrarSbb.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public void unsetSbbContext() {
    }
    public void sbbCreate() throws CreateException {
    }
    public void sbbPostCreate() throws CreateException {
    }
    public void sbbActivate() {
    }
    public void sbbPassivate() {
    }
    public void sbbLoad() {
    }
    public void sbbStore() {
    }
    public void sbbRemove() {
    }
    public void sbbExceptionThrown(Exception exception, Object event, ActivityContextInterface aci) {
    }
    public void sbbRolledBack(RolledBackContext context) {
    }
    public abstract String getCreatorName();
    public abstract String getCreatorMotherName();
    public abstract void setCreatorName(String creatorName);
    public abstract void setCreatorMotherName(String creatorMotherName);
    public abstract ChildRelation getSimpleSip11B2BTestSbbChildRelation();
}


Child Sbb code
public interface MySbbLocalObject extends SbbLocalObject {
     //Service start event/////////////
    public void serviceStartedEvent(ServiceStartedEvent event, ActivityContextInterface aci) ;
//registrar
    public void registerEvent(RequestEvent event, ActivityContextInterface aci) ;
    // Initial request
    public void inviteEvent(RequestEvent event, ActivityContextInterface aci) ;

    // Responses
    public void n1xxResponse(ResponseEvent event, ActivityContextInterface aci) ;

    public void n2xxResponse(ResponseEvent event, ActivityContextInterface aci) ;

    public void bye(RequestEvent event, ActivityContextInterface aci) ;

    public void cancel(CancelRequestEvent event, ActivityContextInterface aci);
}


2010/7/6 Eduardo Martins <emma...@gmail.com>

Eduardo Martins

unread,
Jul 6, 2010, 1:34:05 PM7/6/10
to mobicent...@googlegroups.com
You missed the child sbb code. Also note that in the descriptor you're
defining the sbb local object interface in the parent when it should
be in the child...

-- Eduardo

-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
http://emmartins.blogspot.com
http://www.redhat.com/solutions/telco

On Tue, Jul 6, 2010 at 6:10 PM, seydou konaté

seydou konaté

unread,
Jul 6, 2010, 1:42:56 PM7/6/10
to mobicent...@googlegroups.com
Here is the child Sbb code
package org.mobicents.slee.example.sip11.b2b;

import com.hlr.entity.User;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sip.ClientTransaction;
import javax.sip.DialogState;
import javax.sip.InvalidArgumentException;
import javax.sip.RequestEvent;
import javax.sip.ResponseEvent;
import javax.sip.ServerTransaction;
import javax.sip.SipException;
import javax.sip.address.SipURI;
import javax.sip.header.CSeqHeader;
import javax.sip.header.ContactHeader;
import javax.sip.header.ExpiresHeader;
import javax.sip.header.FromHeader;
import javax.sip.header.ToHeader;
import javax.sip.message.Request;
import javax.sip.message.Response;
import javax.slee.ActivityContextInterface;
import javax.slee.RolledBackContext;
import javax.slee.SbbContext;
import javax.slee.SbbLocalObject;
import javax.slee.facilities.Tracer;
import javax.slee.serviceactivity.ServiceStartedEvent;

import net.java.slee.resource.sip.CancelRequestEvent;
import net.java.slee.resource.sip.DialogActivity;
import net.java.slee.resource.sip.SipActivityContextInterfaceFactory;
import net.java.slee.resource.sip.SleeSipProvider;
import org.mobicents.slee.example.sip11.b2b.dao.UserDao;
import org.mobicents.slee.example.sip11.b2b.dao.impl.UserDaoImpl;

public abstract class MyB2BSbb implements javax.slee.Sbb, MySbbLocalObject {

    private SbbContext sbbContext;
    private static Tracer tracer;


    private SipActivityContextInterfaceFactory sipActivityContextInterfaceFactory;
    private SleeSipProvider sipProvider;
    private static UserDao udao;

    public SipActivityContextInterfaceFactory getSipActivityContextInterfaceFactory() {
        return sipActivityContextInterfaceFactory;
    }

    public void setSipActivityContextInterfaceFactory(SipActivityContextInterfaceFactory sipActivityContextInterfaceFactory) {
        this.sipActivityContextInterfaceFactory = sipActivityContextInterfaceFactory;
    }

    public SleeSipProvider getSipProvider() {
        return sipProvider;
    }

    public void setSipProvider(SleeSipProvider sipProvider) {
        this.sipProvider = sipProvider;
    }

    public static Tracer getTracer() {
        return tracer;
    }

    public static void setTracer(Tracer tracer) {
        MyB2BSbb.tracer = tracer;
    }
        //private static DataSource ds=null;


        //called when services start
        //Service start event/////////////
        public void serviceStartedEvent(ServiceStartedEvent event, ActivityContextInterface aci) {
            sbbContext.getTracer(getClass().getSimpleName()).info("*********My B2B SBB activated, now execute SIP UACs*******");
        }
        //registrar
        public void registerEvent(RequestEvent event, ActivityContextInterface aci) {
            tracer.info("*********************Reception d'une requete de Registration************************");
            Request request=event.getRequest();
            try {
                FromHeader fHeader=(FromHeader) request.getHeader(FromHeader.NAME);
                ContactHeader cHeader=(ContactHeader) event.getRequest().getHeader(ContactHeader.NAME);
                tracer.info("***********From :"+fHeader.getAddress().getDisplayName());
                User user=new User();
                user.setDisplayName(fHeader.getAddress().getDisplayName());
                user.setUri(cHeader.getAddress().getURI());
                user.setUserName(((SipURI)fHeader.getAddress().getURI()).getUser());
                //ContactHeader cHeader=(ContactHeader) event.getRequest().getHeader(ContactHeader.NAME);
                ExpiresHeader eHeader=(ExpiresHeader) event.getRequest().getHeader(ExpiresHeader.NAME);
                int expires=eHeader==null?-1:eHeader.getExpires();
                tracer.info("***********Expires values:"+expires);
                if(expires<=0) {
//                    user=udao.findUser(user.getUserName());
//                    udao.delete(user);
                    udao.executeHSQLUpdate("delete from User where userName=?",user.getUserName());
                    tracer.info("***********User :"+user.getDisplayName()+" unregistered successfull*********");
                } else {
                    udao.save(user);
                    tracer.info("***********User :"+user.getDisplayName()+" registered successfull*********");
                }
                replyToRequestEvent(event, Response.OK);
            } catch (Exception ex) {
                tracer.severe("***********"+ ex);
                Logger.getLogger(MyB2BSbb.class.getName()).log(Level.SEVERE, null, ex);
                replyToRequestEvent(event, Response.BAD_REQUEST);
            }
            tracer.info("***********Users list:"+udao.getAllUser());
        }
// Initial request
public void inviteEvent(RequestEvent event, ActivityContextInterface aci) {

if (getIncomingDialog() != null) {
                    tracer.severe("Repeated request: " + event.getRequest());
                    return;
}

// ACI is the server transaction activity
final ServerTransaction st = event.getServerTransaction();
try {
                    // Create the dialogs representing the incoming and outgoing call
                    // legs.
                    final DialogActivity incomingDialog = (DialogActivity) sipProvider.getNewDialog(st);
                    final DialogActivity outgoingDialog = sipProvider.getNewDialog(incomingDialog, true);
                    // Obtain the dialog activity contexts and attach to them
                    final ActivityContextInterface outgoingDialogACI = sipActivityContextInterfaceFactory.getActivityContextInterface(outgoingDialog);
                    final ActivityContextInterface incomingDialogACI = sipActivityContextInterfaceFactory.getActivityContextInterface(incomingDialog);
                    final SbbLocalObject sbbLocalObject = sbbContext.getSbbLocalObject();
                    incomingDialogACI.attach(sbbLocalObject);
                    outgoingDialogACI.attach(sbbLocalObject);
                    // Record which dialog is which, so we can find the peer dialog
                    // when forwarding messages between dialogs.
                    setIncomingDialog(incomingDialogACI);
                    setOutgoingDialog(outgoingDialogACI);
                    forwardInviteRequest(st, outgoingDialog);
} catch (Throwable e) {
                    tracer.severe("Failed to process incoming INVITE.", e);
                    replyToRequestEvent(event, Response.SERVICE_UNAVAILABLE);
}
}

// Responses
public void n1xxResponse(ResponseEvent event, ActivityContextInterface aci) {
if (event.getResponse().getStatusCode() == Response.TRYING) {
// those are not forwarded to the other dialog
return;
}
processResponse(event, aci);
}

public void n2xxResponse(ResponseEvent event, ActivityContextInterface aci) {
            final CSeqHeader cseq = (CSeqHeader) event.getResponse().getHeader(CSeqHeader.NAME);
            if (cseq.getMethod().equals(Request.INVITE)) {
                    // lets ack it ourselves to avoid UAS retransmissions due to
                    // forwarding of this response and further UAC Ack
                    // note that the app does not handles UAC ACKs
                    try {
                        final Request ack = event.getDialog().createAck(cseq.getSeqNumber());
                        event.getDialog().sendAck(ack);
                    } catch (Exception e) {
                            tracer.severe("***********Unable to ack INVITE's 200 ok from UAS", e);
                    }
            } else if (cseq.getMethod().equals(Request.BYE)
                            || cseq.getMethod().equals(Request.CANCEL)) {
                    // not forwarded to the other dialog
                    return;
            }
            processResponse(event, aci);
}

public void bye(RequestEvent event, ActivityContextInterface aci) {
            // send back 200 ok for this dialog right away, to avoid retransmissions
            replyToRequestEvent(event, Response.OK);
            // forward to the other dialog
            processMidDialogRequest(event, aci);
}

public void cancel(CancelRequestEvent event, ActivityContextInterface aci) {
if (tracer.isInfoEnabled()) {
                    tracer.info("***************Got a CANCEL request****************");
}
try {
                    this.sipProvider.acceptCancel(event, false);
                    final ActivityContextInterface peerDialogACI = getPeerDialog(aci);
                    final DialogActivity peerDialog = (DialogActivity) peerDialogACI.getActivity();
                    final DialogState peerDialogState = peerDialog.getState();
                    if (peerDialogState == null || peerDialogState == DialogState.EARLY) {
                        peerDialog.sendCancel();
                    } else {
                        peerDialog.sendRequest(peerDialog.createRequest(Request.BYE));
                    }
} catch (Exception e) {
tracer.severe("*************Failed to process cancel request", e);
}
}

// Other mid-dialog requests handled the same way as above
// Helpers

private void replyToRequestEvent(RequestEvent event, int status) {
try {
                    event.getServerTransaction().sendResponse(sipProvider.getMessageFactory().createResponse(status,event.getRequest()));
} catch (Throwable e) {
tracer.severe("*****************Failed to reply to request event:\n" + event, e);
}
}

private void processMidDialogRequest(RequestEvent event,ActivityContextInterface dialogACI) {
try {
                    // Find the dialog to forward the request on
                    ActivityContextInterface peerACI = getPeerDialog(dialogACI);
                    forwardByeRequest(event.getServerTransaction(),(DialogActivity) peerACI.getActivity());
} catch (SipException e) {
                    tracer.severe(e.getMessage(), e);
                    replyToRequestEvent(event, Response.SERVICE_UNAVAILABLE);
}
}

private void processResponse(ResponseEvent event,ActivityContextInterface aci) {
try {
                    // Find the dialog to forward the response on
                    ActivityContextInterface peerACI = getPeerDialog(aci);
                    forwardResponse((DialogActivity) aci.getActivity(),(DialogActivity) peerACI.getActivity(), event.getClientTransaction(), event.getResponse());
} catch (SipException e) {
tracer.severe(e.getMessage(), e);
}
}

private ActivityContextInterface getPeerDialog(ActivityContextInterface aci) throws SipException {
final ActivityContextInterface incomingDialogAci = getIncomingDialog();
if (aci.equals(incomingDialogAci)) {
return getOutgoingDialog();
}
if (aci.equals(getOutgoingDialog())) {
return incomingDialogAci;
}
throw new SipException("***************could not find peer dialog");

}

        private void forwardInviteRequest(ServerTransaction st, DialogActivity out) throws SipException {
            final Request incomingRequest = st.getRequest();
            if (tracer.isInfoEnabled()) {
                tracer.info("***************Forwarding request " + incomingRequest.getMethod() + " to dialog " + out);
            }
            // Copies the request, setting the appropriate headers for the dialog.
            Request outgoingRequest = out.createRequest(incomingRequest);
            // Send the request on the dialog activity
            SipURI calledURI=(SipURI) st.getRequest().getRequestURI();
//            ToHeader toHeader=(ToHeader) incomingRequest.getHeader(ToHeader.NAME);
            User user=udao.findUser(calledURI.getUser());
            tracer.info("*************requested user:"+user+"***********************");
            outgoingRequest.setRequestURI(user.getUri());
            final ClientTransaction ct = out.sendRequest(outgoingRequest);
            // Record an association with the original server transaction,
            // so we can retrieve it when forwarding the response.
            out.associateServerTransaction(ct, st);
}

        private void forwardByeRequest(ServerTransaction st, DialogActivity out) throws SipException {
            final Request incomingRequest = st.getRequest();
            if (tracer.isInfoEnabled()) {
                tracer.info("***************Forwarding request " + incomingRequest.getMethod() + " to dialog " + out);
            }
            // Copies the request, setting the appropriate headers for the dialog.
            Request outgoingRequest = out.createRequest(incomingRequest);
            // Send the request on the dialog activity
            SipURI toURI=(SipURI) ((ToHeader)incomingRequest.getHeader(ToHeader.NAME)).getAddress().getURI();
            User user=udao.findUser(toURI.getUser());
            tracer.info("*************requested user:"+user+"***********************");
            outgoingRequest.setRequestURI(user.getUri());
            final ClientTransaction ct = out.sendRequest(outgoingRequest);
            // Record an association with the original server transaction,
            // so we can retrieve it when forwarding the response.
            out.associateServerTransaction(ct, st);
}

private void forwardRequest(ServerTransaction st, DialogActivity out) throws SipException {
            final Request incomingRequest = st.getRequest();
            if (tracer.isInfoEnabled()) {
                tracer.info("***************Forwarding request " + incomingRequest.getMethod() + " to dialog " + out);
            }
            // Copies the request, setting the appropriate headers for the dialog.
            Request outgoingRequest = out.createRequest(incomingRequest);
            // Send the request on the dialog activity
            final ClientTransaction ct = out.sendRequest(outgoingRequest);
            // Record an association with the original server transaction,
            // so we can retrieve it when forwarding the response.
            out.associateServerTransaction(ct, st);
}

private void forwardResponse(DialogActivity in, DialogActivity out,
ClientTransaction ct, Response receivedResponse)
throws SipException {
// Find the original server transaction that this response
// should be forwarded on.
final ServerTransaction st = in.getAssociatedServerTransaction(ct);
// could be null
if (st == null)
throw new SipException("*********could not find associated server transaction******************");
if (tracer.isInfoEnabled()) {
                    tracer.info("*********Forwarding response " + receivedResponse.getStatusCode() + " to dialog " + out);
}
// Copy the response across, setting the appropriate headers for the
// dialog
final Response outgoingResponse = out.createResponse(st,receivedResponse);
// Forward response upstream.
try {
                    st.sendResponse(outgoingResponse);
} catch (InvalidArgumentException e) {
                    tracer.severe("*********Failed to send response:\n" + outgoingResponse, e);
                    throw new SipException("*************invalid response", e);
}
}

// other request handling methods
// lifecycle methods
// CMP field accessors for each Dialogs ACI
public abstract void setIncomingDialog(ActivityContextInterface aci);

public abstract ActivityContextInterface getIncomingDialog();

public abstract void setOutgoingDialog(ActivityContextInterface aci);

public abstract ActivityContextInterface getOutgoingDialog();

public void setSbbContext(SbbContext context) {
this.sbbContext = context;
if (tracer == null) {
                    tracer = sbbContext.getTracer(MyB2BSbb.class.getSimpleName());
}
                udao=new UserDaoImpl();
// try {
//                    Context ctx = (Context) new InitialContext().lookup("java:comp/env");
//                    sipActivityContextInterfaceFactory = (SipActivityContextInterfaceFactory) ctx.lookup("slee/resources/jainsip/1.2/acifactory");
//                    sipProvider = (SleeSipProvider) ctx.lookup("slee/resources/jainsip/1.2/provider");
                    //ds=(DataSource) new InitialContext().lookup("java:/MySqlDS");
                    //tracer.info("*********Data Source:"+ds);
                    
// } catch (NamingException e) {
//                    tracer.severe(e.getMessage(), e);
// }
}

public void unsetSbbContext() {
this.sbbContext = null;
}

public void sbbCreate() throws javax.slee.CreateException {
}

public void sbbPostCreate() throws javax.slee.CreateException {
}

public void sbbActivate() {
}

public void sbbPassivate() {
}

public void sbbRemove() {
}

public void sbbLoad() {
}

public void sbbStore() {
}

public void sbbExceptionThrown(Exception exception, Object event,ActivityContextInterface activity) {
}

public void sbbRolledBack(RolledBackContext context) {
}

}

2010/7/6 Eduardo Martins <emma...@gmail.com>

Eduardo Martins

unread,
Jul 6, 2010, 1:50:27 PM7/6/10
to mobicent...@googlegroups.com
public abstract class MyB2BSbb implements javax.slee.Sbb, MySbbLocalObject {

should be

public abstract class MyB2BSbb implements javax.slee.Sbb {

otherwise you inherit the methods from javax.slee.SbbLocalObject,
which are not implemented by you or SLEE.

I understand that you may want to use such relation to "known" what
methods to implement but in that case define first another interface
with those methods, say MyB2B, then define that MySbbLocalObject
extends it and MyB2BSbb implements it.

-- Eduardo

-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-
http://emmartins.blogspot.com
http://www.redhat.com/solutions/telco

On Tue, Jul 6, 2010 at 6:42 PM, seydou konaté

Reply all
Reply to author
Forward
0 new messages