[jboss-cvs] JBossAS SVN: r64417 - in trunk/ejb3: src/resources/test-configs and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Aug 1 18:51:03 EDT 2007
Author: bdecoste
Date: 2007-08-01 18:51:03 -0400 (Wed, 01 Aug 2007)
New Revision: 64417
Added:
trunk/ejb3/src/resources/test-configs/localfromremote1/
trunk/ejb3/src/resources/test-configs/localfromremote1/deploy/
trunk/ejb3/src/resources/test-configs/localfromremote2/
trunk/ejb3/src/resources/test-configs/localfromremote2/conf/
trunk/ejb3/src/resources/test-configs/localfromremote2/conf/jboss-service.xml
trunk/ejb3/src/resources/test-configs/localfromremote2/deploy/
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulBean.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulLocal.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulRemote.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessBean.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessLocal.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessRemote.java
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/unit/
trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/unit/LocalTestCase.java
Modified:
trunk/ejb3/build-test.xml
Log:
[EJBTHREE-1019] added tests.
Also, replaced jboss.security.classpath with jbosssx and security.spi in build-test.xml
Modified: trunk/ejb3/build-test.xml
===================================================================
--- trunk/ejb3/build-test.xml 2007-08-01 21:51:41 UTC (rev 64416)
+++ trunk/ejb3/build-test.xml 2007-08-01 22:51:03 UTC (rev 64417)
@@ -59,6 +59,8 @@
<property name="node0" value="${env.MYTESTIP_1}" />
<property name="node0.http.url" value="http://${node0}:8080" />
<property name="node0.jndi.url" value="jnp://${node0}:1099" />
+ <property name="node0.jndi.port1.url" value="jnp://${node0}:1199" />
+ <property name="node0.http.port1.url" value="http://${node0}:8180" />
<property name="node1" value="${env.MYTESTIP_2}" />
<property name="node1.http.url" value="http://${node1}:8080" />
<property name="node1.jndi.url" value="jnp://${node1}:1099" />
@@ -189,9 +191,9 @@
<path refid="jboss.systemjmx.classpath"/>
<path refid="jboss.naming.classpath"/>
<path refid="jboss.transaction.classpath"/>
- <path refid="jboss.security.classpath"/>
- <path refid="jboss.security.spi.classpath"/>
<path refid="jboss.security.int.classpath"/>
+ <path refid="jboss.jbosssx.classpath"/>
+ <path refid="jboss.jboss.security.spi.classpath"/>
<!-- this is for the NonSerializableFactory -->
<path refid="jboss.server.classpath"/>
<path refid="jboss.mq.classpath"/>
@@ -265,8 +267,9 @@
<!-- The "security" test needs JaasSecurityManagerServiceMBean -->
<path id="security.client.classpath">
<path refid="client.classpath"/>
- <path refid="jboss.security.classpath"/>
+ <path refid="jboss.jbosssx.classpath"/>
<path refid="jboss.security.int.classpath"/>
+ <path refid="jboss.jboss.security.spi.classpath"/>
<path refid="jboss.j2se.classpath"/>
</path>
@@ -3031,6 +3034,39 @@
<copy file="${build.lib}/stateless-test.jar" tofile="${build.lib}/stateless-test.ejb3"/>
</target>
+ <target name="localfromremote"
+ description="Builds all jar files."
+ depends="compile-classes">
+
+ <mkdir dir="${build.lib}"/>
+
+ <copy file="${resources}/test/localfromremote/jndi1.properties" tofile="${resources}/test/localfromremote/jndi.properties"/>
+ <jar jarfile="${build.lib}/localfromremote-test1.jar">
+ <fileset dir="${build.classes}">
+ <include name="org/jboss/ejb3/test/localfromremote/*.class"/>
+ </fileset>
+
+ <fileset dir="${resources}/test/localfromremote">
+ <include name="jndi.properties"/>
+ </fileset>
+ </jar>
+ <delete file="${resources}/test/localfromremote/jndi.properties"/>
+ <copy file="${build.lib}/localfromremote-test1.jar" tofile="${resources}/test-configs/localfromremote1/deploy/localfromremote-test.jar"/>
+
+ <copy file="${resources}/test/localfromremote/jndi2.properties" tofile="${resources}/test/localfromremote/jndi.properties"/>
+ <jar jarfile="${build.lib}/localfromremote-test2.jar">
+ <fileset dir="${build.classes}">
+ <include name="org/jboss/ejb3/test/localfromremote/*.class"/>
+ </fileset>
+
+ <fileset dir="${resources}/test/localfromremote">
+ <include name="jndi.properties"/>
+ </fileset>
+ </jar>
+ <delete file="${resources}/test/localfromremote/jndi.properties"/>
+ <copy file="${build.lib}/localfromremote-test2.jar" tofile="${resources}/test-configs/localfromremote2/deploy/localfromremote-test.jar"/>
+ </target>
+
<target name="concurrentnaming"
description="Builds all jar files."
depends="compile-classes">
@@ -3472,7 +3508,7 @@
</copy>
</target>
- <target name="jars" depends="clusteredjms, entityoptimisticlocking, concurrentnaming, propertyreplacement, persistenceunits, appclient, tck5sec, invalidtxmdb, descriptortypo, libdeployment, homeinterface, timestampentity, arjuna, mdbtransactions, unauthenticatedprincipal, clusteredservice, invoker, classloader,
+ <target name="jars" depends="localfromremote, clusteredjms, entityoptimisticlocking, concurrentnaming, propertyreplacement, persistenceunits, appclient, tck5sec, invalidtxmdb, descriptortypo, libdeployment, homeinterface, timestampentity, arjuna, mdbtransactions, unauthenticatedprincipal, clusteredservice, invoker, classloader,
circulardependency, jsp, timerdependency, servicedependency, servlet, stateless14, webservices, ear, ejbthree440,
ejbthree454, ejbthree653, ejbthree670, ejbthree712, ejbthree724, ejbthree751, ejbthree832, ejbthree921, ejbthree936,
ejbthree939,
@@ -3573,13 +3609,15 @@
<path refid="sun.javamail.classpath"/>
<path refid="apache.httpclient.classpath"/>
<path refid="jboss.server.classpath"/>
- <path refid="jboss.security.classpath"/>
+ <path refid="jboss.jbosssx.classpath"/>
+ <path refid="jboss.security.int.classpath"/>
+ <path refid="jboss.jboss.security.spi.classpath"/>
<path refid="jboss.naming.classpath"/>
<path refid="trove.classpath"/>
- <path refid="jboss.common.core.classpath"/>
- <path refid="jboss.common.logging.spi.classpath"/>
- <path refid="jboss.common.logging.log4j.classpath"/>
- <path refid="jboss.common.logging.jdk.classpath"/>
+ <path refid="jboss.common.core.classpath"/>
+ <path refid="jboss.common.logging.spi.classpath"/>
+ <path refid="jboss.common.logging.log4j.classpath"/>
+ <path refid="jboss.common.logging.jdk.classpath"/>
<path refid="jboss.aop.classpath"/>
<path refid="jboss.aspects.classpath"/>
<path refid="jboss.jbossxb.classpath"/>
@@ -3672,7 +3710,9 @@
<path refid="sun.javamail.classpath"/>
<path refid="apache.httpclient.classpath"/>
<path refid="jboss.server.classpath"/>
- <path refid="jboss.security.classpath"/>
+ <path refid="jboss.jbosssx.classpath"/>
+ <path refid="jboss.security.int.classpath"/>
+ <path refid="jboss.jboss.security.spi.classpath"/>
<path refid="jboss.naming.classpath"/>
<path refid="trove.classpath"/>
<path refid="jboss.common.core.classpath"/>
@@ -4054,6 +4094,7 @@
<antcall target="invoker-test" inheritRefs="true"/>
<antcall target="iiop-tests" inheritRefs="true"/>
<antcall target="libdeployment-test" inheritRefs="true"/>
+ <antcall target="multi-instance-localfromremote-test" inheritRefs="true"/>
</target>
<target name="no-start-jboss-tests" depends="init" description="Execute all tests">
@@ -4652,6 +4693,37 @@
</target>
+ <target name="multi-instance-localfromremote-test">
+ <create-config baseconf="default" newconf="localfromremote1">
+ <patternset>
+ <include name="conf/**"/>
+ <include name="deploy*/**"/>
+ <include name="lib/**"/>
+ </patternset>
+ </create-config>
+ <create-config baseconf="default" newconf="localfromremote2">
+ <patternset>
+ <include name="conf/**"/>
+ <include name="deploy*/**"/>
+ <include name="lib/**"/>
+ </patternset>
+ </create-config>
+
+ <start-jboss conf="localfromremote1" host="${node0}" jvmargs="${ejb3.jboss.jvmargs}"/>
+ <start-jboss conf="localfromremote2" host="${node0}" jvmargs="${ejb3.jboss.jvmargs}"/>
+
+ <antcall target="tests-multi-instance-wait"/>
+
+ <antcall target="test-with-jvmargs" inheritRefs="true">
+ <param name="test" value="localfromremote"/>
+ <param name="jvmargs" value=""/>
+ </antcall>
+
+ <stop-jboss url="${node0.jndi.url}" jboss.dist="${ejb3.dist}"/>
+ <stop-jboss url="${node0.jndi.port1.url}" jboss.dist="${ejb3.dist}"/>
+
+ </target>
+
<target name="clustered-jms-test">
<create-config baseconf="all" newconf="clusteredjms">
<patternset>
@@ -4696,6 +4768,19 @@
<fail message="Timeout waiting for nodes to start" if="cluster.timeout"/>
<echo message="Nodes have started, waiting for cluster to stablize..."/>
</target>
+
+ <target name="tests-multi-instance-wait" unless="${tests.clustering.skip.startup}">
+ <echo message="Waiting for nodes to start..."/>
+ <waitfor maxwait="120" maxwaitunit="second"
+ checkevery="5" checkeveryunit="second" timeoutproperty="cluster.timeout">
+ <and>
+ <http url="${node0.http.url}"/>
+ <http url="${node0.http.port1.url}"/>
+ </and>
+ </waitfor>
+ <fail message="Timeout waiting for nodes to start" if="cluster.timeout"/>
+ <echo message="Nodes have started, waiting for cluster to stablize..."/>
+ </target>
<target name="tests-clustering-startup" unless="${tests.clustering.skip.startup}">
<create-cluster-node conf="node0"/>
Added: trunk/ejb3/src/resources/test-configs/localfromremote2/conf/jboss-service.xml
===================================================================
--- trunk/ejb3/src/resources/test-configs/localfromremote2/conf/jboss-service.xml (rev 0)
+++ trunk/ejb3/src/resources/test-configs/localfromremote2/conf/jboss-service.xml 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- $Id: jboss-service.xml 62436 2007-04-19 21:28:21Z dimitris at jboss.org $ -->
+
+<!-- ===================================================================== -->
+<!-- JBoss Server Configuration -->
+<!-- ===================================================================== -->
+
+<server>
+
+ <!-- Load all jars from the JBOSS_DIST/server/<config>/lib directory. This
+ can be restricted to specific jars by specifying them in the archives
+ attribute.
+ -->
+ <classpath codebase="${jboss.server.lib.url:lib}" archives="*"/>
+
+ <!-- ==================================================================== -->
+ <!-- Main Deployer -->
+ <!-- ==================================================================== -->
+ <mbean code="org.jboss.deployment.MainDeployer"
+ name="jboss.system:service=MainDeployer">
+ <!-- This is used to delegate the deployment handling -->
+ <attribute name="KernelMainDeployer"><inject bean="MainDeployer" /></attribute>
+ <!-- This is used to validate incomplete deployments -->
+ <attribute name="Controller"><inject bean="jboss.kernel:service=Kernel" property="controller"/></attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- SAR Deployer -->
+ <!-- ==================================================================== -->
+ <mbean code="org.jboss.deployment.SARDeployer"
+ name="jboss.system:service=ServiceDeployer">
+ <depends>jboss.system:service=MainDeployer</depends>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- JSR-77 Single JBoss Server Management Domain -->
+ <!-- ==================================================================== -->
+ <mbean code="org.jboss.management.j2ee.LocalJBossServerDomain"
+ name="jboss.management.local:j2eeType=J2EEDomain,name=Manager">
+ <attribute name="MainDeployer">jboss.system:service=MainDeployer</attribute>
+ <attribute name="SARDeployer">jboss.system:service=ServiceDeployer</attribute>
+ <attribute name="EARDeployer">jboss.j2ee:service=EARDeployer</attribute>
+ <attribute name="EJBDeployer">jboss.ejb:service=EJBDeployer</attribute>
+ <attribute name="RARDeployer">jboss.jca:service=RARDeployer</attribute>
+ <attribute name="CMDeployer">jboss.jca:service=ConnectionFactoryDeployer</attribute>
+ <attribute name="WARDeployer">jboss.web:service=WebServer</attribute>
+ <attribute name="CARDeployer">jboss.j2ee:service=ClientDeployer</attribute>
+ <attribute name="MailService">jboss:service=Mail</attribute>
+ <attribute name="JMSService">jboss.mq:service=DestinationManager</attribute>
+ <attribute name="JNDIService">jboss:service=Naming</attribute>
+ <attribute name="JTAService">jboss:service=TransactionManager</attribute>
+ <attribute name="UserTransactionService">jboss:service=DistributedTransactionManager</attribute>
+ <attribute name="RMI_IIOPService">jboss:service=CorbaORB</attribute>
+ <depends>jboss.system:service=MainDeployer</depends>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- XMBean Persistence -->
+ <!-- ==================================================================== -->
+ <mbean code="org.jboss.system.pm.AttributePersistenceService"
+ name="jboss:service=AttributePersistenceService"
+ xmbean-dd="resource:xmdesc/AttributePersistenceService-xmbean.xml">
+ <!-- the AttributePersistenceService is persistent, itself -->
+
+ <!--
+ <attribute name="AttributePersistenceManagerClass">org.jboss.system.pm.XMLAttributePersistenceManager</attribute>
+ <attribute name="AttributePersistenceManagerConfig">
+ <data-directory>data/xmbean-attrs</data-directory>
+ </attribute>
+ <attribute name="ApmDestroyOnServiceStop">false</attribute>
+ <attribute name="VersionTag"></attribute>
+ -->
+ </mbean>
+
+ <!-- A Thread pool service -->
+ <mbean code="org.jboss.util.threadpool.BasicThreadPool"
+ name="jboss.system:service=ThreadPool">
+ <attribute name="Name">JBoss System Threads</attribute>
+ <attribute name="ThreadGroupName">System Threads</attribute>
+ <!-- How long a thread will live without any tasks in MS -->
+ <attribute name="KeepAliveTime">60000</attribute>
+ <!-- The max number of threads in the pool -->
+ <attribute name="MaximumPoolSize">10</attribute>
+ <!-- The max number of tasks before the queue is full -->
+ <attribute name="MaximumQueueSize">1000</attribute>
+ <!-- The behavior of the pool when a task is added and the queue is full.
+ abort - a RuntimeException is thrown
+ run - the calling thread executes the task
+ wait - the calling thread blocks until the queue has room
+ discard - the task is silently discarded without being run
+ discardOldest - check to see if a task is about to complete and enque
+ the new task if possible, else run the task in the calling thread
+ -->
+ <attribute name="BlockingMode">run</attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Log4j Initialization -->
+ <!-- ==================================================================== -->
+
+ <mbean code="org.jboss.logging.Log4jService"
+ name="jboss.system:type=Log4jService,service=Logging"
+ xmbean-dd="resource:xmdesc/Log4jService-xmbean.xml">
+ <attribute name="ConfigurationURL">resource:log4j.xml</attribute>
+ <!-- Set the org.apache.log4j.helpers.LogLog.setQuiteMode. As of log4j1.2.8
+ this needs to be set to avoid a possible deadlock on exception at the
+ appender level. See bug#696819.
+ -->
+ <attribute name="Log4jQuietMode">true</attribute>
+ <!-- How frequently in seconds the ConfigurationURL is checked for changes -->
+ <attribute name="RefreshPeriod">60</attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Active Alarm Table -->
+ <!-- ==================================================================== -->
+
+ <!--
+ | The ActiveAlarmTable service is a simple JMX notification listener
+ | that maintains a table with the received notifications (alarms).
+ | The alarms can be acknowledged through the jmx or the web console.
+ | Modify the SubscriptionList below to subscribe for any notification
+ | in the system and treat it as an alarm.
+ | The JMXNotificationAppender is a log4j Appender that can be configured
+ | in log4j.xml, that trasforms logging events to JMX notification so they
+ | can be fed back into the table. By storing the WARN or higher level logging
+ | events you can have a quick view of important system faults.
+ |
+ | The following attributes may be set:
+ |
+ | MaxTableSize (default 1000)
+ | - set an upper limit to the number of stored alarms
+ | LogLevel (default DEBUG)
+ | - the log level to use for received notification, can be set to NONE
+ | ServerId (default jboss)
+ | - used to construct unique alarm ids
+ | SubscriptionList
+ | - subscribe for the notifications to be stored in the table
+
+ <mbean code="org.jboss.monitor.services.ActiveAlarmTable"
+ name="jboss.monitor:service=ActiveAlarmTable">
+ <attribute name="SubscriptionList">
+ <subscription-list>
+ <mbean name="jboss.monitor:*">
+ <notification type="jboss.alarm"/>
+ <notification type="JBOSS_MONITOR_NOTIFICATION"/>
+ </mbean>
+ <mbean name="jboss.system:service=Logging,type=JMXNotificationAppender"/>
+ </subscription-list>
+ </attribute>
+ </mbean>
+ -->
+
+ <!-- ==================================================================== -->
+ <!-- JBoss RMI Classloader - only install when available -->
+ <!-- ==================================================================== -->
+ <mbean code="org.jboss.util.property.jmx.SystemPropertyClassValue"
+ name="jboss.rmi:type=RMIClassLoader">
+ <attribute name="Property">java.rmi.server.RMIClassLoaderSpi</attribute>
+ <attribute name="ClassName">org.jboss.system.JBossRMIClassLoader</attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Service Binding -->
+ <!-- ==================================================================== -->
+
+ <!-- Automatically activated when generatting the clustering environment -->
+ <!-- @TESTSUITE_CLUSTER_CONFIG@ -->
+
+ <!--
+ | Binding service manager for port/host mapping. This is a sample
+ | config that demonstrates a JBoss instances with a server name 'jboss1'
+ | loading its bindings from an XML file using the ServicesStoreFactory
+ | implementation returned by the XMLServicesStoreFactory.
+ |
+ | ServerName: The unique name assigned to a JBoss server instance for
+ | lookup purposes. This allows a single ServicesStore to handle mulitiple
+ | JBoss servers.
+ |
+ | StoreURL: The URL string passed to org.jboss.services.binding.ServicesStore
+ | during initialization that specifies how to connect to the bindings store.
+ | StoreFactory: The org.jboss.services.binding.ServicesStoreFactory interface
+ | implementation to create to obtain the ServicesStore instance.
+-->
+ <mbean code="org.jboss.services.binding.ServiceBindingManager"
+ name="jboss.system:service=ServiceBindingManager">
+ <attribute name="ServerName">ports-01</attribute>
+ <attribute name="StoreURL">../docs/examples/binding-manager/sample-bindings.xml</attribute>
+ <attribute name="StoreFactoryClassName">
+ org.jboss.services.binding.XMLServicesStoreFactory
+ </attribute>
+ </mbean>
+
+
+
+ <!-- ==================================================================== -->
+ <!-- Class Loading -->
+ <!-- ==================================================================== -->
+
+ <!-- A mini webserver used for dynamic and class and resource loading -->
+ <mbean code="org.jboss.web.WebService"
+ name="jboss:service=WebService">
+ <!-- The Bind address and Port -->
+ <attribute name="BindAddress">${jboss.bind.address}</attribute>
+ <attribute name="Port">8083</attribute>
+ <!-- The address to use for the host portion of the RMI codebase URL -->
+ <attribute name="Host">${java.rmi.server.hostname}</attribute>
+ <!-- Should non-EJB .class files be downloadable -->
+ <attribute name="DownloadServerClasses">true</attribute>
+ <!-- Should resources other than .class files be downloadable. Both
+ DownloadServerClasses and DownloadResources must be true for resources
+ to be downloadable. This is false by default because its generally a
+ bad idea as server configuration files that container security
+ information can be accessed.
+ -->
+ <attribute name="DownloadResources">false</attribute>
+
+ <!-- Use the default thread pool for dynamic class loading -->
+ <depends optional-attribute-name="ThreadPool"
+ proxy-type="attribute">jboss.system:service=ThreadPool</depends>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- JNDI -->
+ <!-- ==================================================================== -->
+
+ <!-- A simple mbean wrapper around the jndi Naming object. This
+ only handles an in memory instance. The NamingService uses this
+ as the JNDI store and exposes it remotely.
+ -->
+ <mbean code="org.jnp.server.NamingBeanImpl"
+ name="jboss:service=NamingBeanImpl"
+ xmbean-dd="resource:xmdesc/NamingBean-xmbean.xml">
+ </mbean>
+
+ <mbean code="org.jboss.naming.NamingService"
+ name="jboss:service=Naming"
+ xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
+ <!-- The call by value mode. true if all lookups are unmarshalled using
+ the caller's TCL, false if in VM lookups return the value by reference.
+ -->
+ <attribute name="CallByValue">false</attribute>
+ <!-- The listening port for the bootstrap JNP service. Set this to -1
+ to run the NamingService without the JNP invoker listening port.
+ -->
+ <attribute name="Port">1099</attribute>
+ <!-- The bootstrap JNP server bind address. This also sets the default
+ RMI service bind address. Empty == all addresses
+ -->
+ <attribute name="BindAddress">${jboss.bind.address}</attribute>
+ <!-- The port of the RMI naming service, 0 == anonymous -->
+ <attribute name="RmiPort">1098</attribute>
+ <!-- The RMI service bind address. Empty == all addresses
+ -->
+ <attribute name="RmiBindAddress">${jboss.bind.address}</attribute>
+ <!-- The thread pool service used to control the bootstrap lookups -->
+ <depends optional-attribute-name="LookupPool"
+ proxy-type="attribute">jboss.system:service=ThreadPool</depends>
+ <!-- An example of using the unifed invoker as the transport.
+ <depends optional-attribute-name="InvokerProxyFactory"
+ proxy-type="attribute">jboss:service=proxyFactory,type=unified,target=Naming</depends>
+ -->
+ <depends optional-attribute-name="Naming"
+ proxy-type="attribute">jboss:service=NamingBeanImpl</depends>
+ </mbean>
+
+ <mbean code="org.jboss.naming.JNDIView"
+ name="jboss:service=JNDIView"
+ xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
+ <!-- The HANamingService service name -->
+ <attribute name="HANamingService">jboss:service=HAJNDI</attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Security -->
+ <!-- ==================================================================== -->
+
+ <mbean code="org.jboss.security.plugins.SecurityConfig"
+ name="jboss.security:service=SecurityConfig">
+ <attribute name="LoginConfig">jboss.security:service=XMLLoginConfig</attribute>
+ <depends>jboss.security:service=XMLLoginConfig</depends>
+ </mbean>
+ <mbean code="org.jboss.security.auth.login.XMLLoginConfig"
+ name="jboss.security:service=XMLLoginConfig">
+ <attribute name="ConfigResource">login-config.xml</attribute>
+ </mbean>
+
+ <!-- JAAS security manager and realm mapping -->
+ <mbean code="org.jboss.security.plugins.JaasSecurityManagerService"
+ name="jboss.security:service=JaasSecurityManager">
+ <!-- A flag which indicates whether the SecurityAssociation server mode
+ is set on service creation. This is true by default since the
+ SecurityAssociation should be thread local for multi-threaded server
+ operation.
+ -->
+ <attribute name="ServerMode">true</attribute>
+ <attribute name="SecurityManagerClassName">org.jboss.security.plugins.JaasSecurityManager</attribute>
+ <attribute name="DefaultUnauthenticatedPrincipal">anonymous</attribute>
+ <!-- DefaultCacheTimeout: Specifies the default timed cache policy timeout
+ in seconds.
+ If you want to disable caching of security credentials, set this to 0 to
+ force authentication to occur every time. This has no affect if the
+ AuthenticationCacheJndiName has been changed from the default value.
+ -->
+ <attribute name="DefaultCacheTimeout">1800</attribute>
+ <!-- DefaultCacheResolution: Specifies the default timed cache policy
+ resolution in seconds. This controls the interval at which the cache
+ current timestamp is updated and should be less than the DefaultCacheTimeout
+ in order for the timeout to be meaningful. This has no affect if the
+ AuthenticationCacheJndiName has been changed from the default value.
+ -->
+ <attribute name="DefaultCacheResolution">60</attribute>
+ <!-- DeepCopySubjectMode: This set the copy mode of subjects done by the
+ security managers to be deep copies that makes copies of the subject
+ principals and credentials if they are cloneable. It should be set to
+ true if subject include mutable content that can be corrupted when
+ multiple threads have the same identity and cache flushes/logout clearing
+ the subject in one thread results in subject references affecting other
+ threads.
+ -->
+ <attribute name="DeepCopySubjectMode">false</attribute>
+ </mbean>
+
+ <!-- Authorization manager-->
+ <mbean code="org.jboss.security.plugins.AuthorizationManagerService"
+ name="jboss.security:service=AuthorizationManager">
+ <attribute name="AuthorizationManagerClassName">org.jboss.security.plugins.JBossAuthorizationManager</attribute>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Transactions -->
+ <!-- ==================================================================== -->
+ <!-- The configurable Xid factory. For use with Oracle, set pad to true -->
+ <mbean code="org.jboss.tm.XidFactory"
+ name="jboss:service=XidFactory">
+ <!--attribute name="Pad">true</attribute-->
+ </mbean>
+
+ <!-- TM Recovery. Obsolete, use JBossTS instead.
+ <mbean code="org.jboss.tm.recovery.XidFactoryInitializationService"
+ name="jboss:service=XidFactoryInitializer">
+ <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
+ <attribute name="NextTxGenerationFile">${jboss.server.data.dir}/next-tx-generation.dat</attribute>
+ </mbean>
+
+ <mbean code="org.jboss.tm.recovery.BatchRecoveryLoggerService" name="jboss:service=RecoveryLogger">
+ <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
+ <depends>jboss:service=XidFactoryInitializer</depends>
+ <attribute name="DirectoryList">${jboss.server.data.dir}/recovery-log</attribute>
+ <attribute name="LogFileSize">5000000</attribute>
+ <attribute name="HeuristicStatusLogDirectory">${jboss.server.data.dir}/heuristics-log</attribute>
+ </mbean>
+
+ <mbean code="org.jboss.tm.recovery.RecoveryManagerService" name="jboss:service=RecoveryManager">
+ <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
+ <depends optional-attribute-name="TransactionManager">jboss:service=TransactionManager</depends>
+ <depends optional-attribute-name="RecoveryLogger" proxy-type="org.jboss.tm.recovery.RecoveryLoggerInstance">jboss:service=RecoveryLogger</depends>
+ </mbean>
+ -->
+
+ <!--
+ | The fast in-memory transaction manager.
+ | Deprecated in 5.0. Use JBossTS JTA instead.
+ <mbean code="org.jboss.tm.TransactionManagerService"
+ name="jboss:service=TransactionManager"
+ xmbean-dd="resource:xmdesc/TransactionManagerService-xmbean.xml">
+ <attribute name="TransactionTimeout">300</attribute>
+ <attribute name="XARetryTimeout">60</attribute>
+ <attribute name="PreparedTimeout">60</attribute>
+ <attribute name="GlobalIdsEnabled">true</attribute>
+ <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
+ </mbean>
+ -->
+
+ <!-- JBossTS JTA -->
+ <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService"
+ name="jboss:service=TransactionManager">
+ <attribute name="TransactionTimeout">300</attribute>
+ </mbean>
+
+ <!--
+ | UserTransaction support. Will be replaced by the DTM once
+ | the DTM is made to play nice with JBossTS.
+ -->
+ <mbean code="org.jboss.tm.usertx.server.ClientUserTransactionService"
+ name="jboss:service=ClientUserTransaction"
+ xmbean-dd="resource:xmdesc/ClientUserTransaction-xmbean.xml">
+ <depends>
+ <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
+ name="jboss:service=proxyFactory,target=ClientUserTransactionFactory">
+ <attribute name="InvokerName">jboss:service=invoker,type=unified</attribute>
+ <attribute name="TargetName">jboss:service=ClientUserTransaction</attribute>
+ <attribute name="JndiName">UserTransactionSessionFactory</attribute>
+ <attribute name="ExportedInterface">org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory</attribute>
+ <attribute name="ClientInterceptors">
+ <interceptors>
+ <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
+ <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
+ </interceptors>
+ </attribute>
+ <depends>jboss:service=invoker,type=unified</depends>
+ </mbean>
+ </depends>
+ <depends optional-attribute-name="TxProxyName">
+ <mbean code="org.jboss.invocation.jrmp.server.JRMPProxyFactory"
+ name="jboss:service=proxyFactory,target=ClientUserTransaction">
+ <attribute name="InvokerName">jboss:service=invoker,type=unified</attribute>
+ <attribute name="TargetName">jboss:service=ClientUserTransaction</attribute>
+ <attribute name="JndiName"></attribute>
+ <attribute name="ExportedInterface">org.jboss.tm.usertx.interfaces.UserTransactionSession</attribute>
+ <attribute name="ClientInterceptors">
+ <interceptors>
+ <interceptor>org.jboss.proxy.ClientMethodInterceptor</interceptor>
+ <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor>
+ </interceptors>
+ </attribute>
+ <depends>jboss:service=invoker,type=unified</depends>
+ </mbean>
+ </depends>
+ </mbean>
+
+ <!--
+ | Distributed transaction manager.
+ | Includes support for UserTransaction over JBoss remoting.
+ | Works with the old in-memory tx manager, but not JBossTS.
+ | Hence disabled for now.
+ <mbean code="org.jboss.tm.remoting.server.DistributedTransactionManager"
+ name="jboss:service=DistributedTransactionManager">
+ <depends>jboss:service=TransactionManager</depends>
+ <depends-list optional-attribute-name="Connectors">
+ <depends-list-element>jboss.remoting:service=Connector,transport=socket</depends-list-element>
+ </depends-list>
+ <attribute name="InterpositionEnabled">false</attribute>
+ </mbean>
+ -->
+
+ <!-- ==================================================================== -->
+ <!-- Invokers to the JMX node -->
+ <!-- ==================================================================== -->
+
+ <!-- Unified invoker (based on remoting) -->
+ <!-- Can find more details on unified invoker configuration at -->
+ <!-- http://docs.jboss.org/jbossas/unified_invoker/UnifiedInvoker_guide.html -->
+ <mbean code="org.jboss.invocation.unified.server.UnifiedInvoker"
+ name="jboss:service=invoker,type=unified">
+ <!-- To turn on strict RMI exception propagation uncomment block below -->
+ <!-- This will cause the UnifiedInvokerProxy to wrap RemoteExceptions -->
+ <!-- within a ServerException, otherwise will throw root exception -->
+ <!-- (not RemoteException) -->
+ <!-- <attribute name="StrictRMIException">true</attribute> -->
+ <depends>jboss:service=TransactionManager</depends>
+ <depends>jboss.remoting:service=Connector,transport=socket</depends>
+ </mbean>
+
+ <!-- RMI/JRMP invoker -->
+ <mbean code="org.jboss.invocation.jrmp.server.JRMPInvoker"
+ name="jboss:service=invoker,type=jrmp">
+ <attribute name="RMIObjectPort">4444</attribute>
+ <attribute name="ServerAddress">${jboss.bind.address}</attribute>
+ <!--
+ <attribute name="RMIClientSocketFactory">custom</attribute>
+ <attribute name="RMIServerSocketFactory">custom</attribute>
+ <attribute name="RMIServerSocketAddr">custom</attribute>
+ <attribute name="SecurityDomain">ssl-domain-name</attribute>
+ -->
+ <depends>jboss:service=TransactionManager</depends>
+ </mbean>
+
+ <mbean code="org.jboss.invocation.local.LocalInvoker"
+ name="jboss:service=invoker,type=local">
+
+ <depends>jboss:service=TransactionManager</depends>
+ </mbean>
+
+ <mbean code="org.jboss.invocation.pooled.server.PooledInvoker"
+ name="jboss:service=invoker,type=pooled">
+ <attribute name="NumAcceptThreads">1</attribute>
+ <attribute name="MaxPoolSize">300</attribute>
+ <attribute name="ClientMaxPoolSize">300</attribute>
+ <attribute name="SocketTimeout">60000</attribute>
+ <attribute name="ServerBindAddress">${jboss.bind.address}</attribute>
+ <attribute name="ServerBindPort">4445</attribute>
+ <attribute name="ClientConnectAddress">${jboss.bind.address}</attribute>
+ <attribute name="ClientConnectPort">0</attribute>
+ <attribute name="ClientRetryCount">1</attribute>
+ <attribute name="EnableTcpNoDelay">false</attribute>
+
+ <!-- Customized socket factory attributes
+ <attribute name="ClientSocketFactoryName">custom.client.factory</attribute>
+ <attribute name="ServerSocketFactoryName">custom.server.factory</attribute>
+ <attribute name="SslDomain">java:/jaas/pooledInvoker</attribute>
+ -->
+ <depends optional-attribute-name="TransactionManagerService">jboss:service=TransactionManager</depends>
+ </mbean>
+
+ <!-- ==================================================================== -->
+ <!-- Remoting services -->
+ <!-- ==================================================================== -->
+
+ <!-- For detailed description of all these configuration attributes, please see the -->
+ <!-- JBoss Remoting User's Guide or wiki (http://www.jboss.org/wiki/Wiki.jsp?page=Remoting_configuration) -->
+
+ <!-- The NetworkRegistry contains all the local and remote -->
+ <!-- servers that it recognizes. The remote ones registered -->
+ <!-- are dependant on the detectors running and which domains -->
+ <!-- they are configured to identify. -->
+ <mbean code="org.jboss.remoting.network.NetworkRegistry"
+ name="jboss.remoting:service=NetworkRegistry"/>
+
+ <!-- The Connector is the core component of the remoting server service. -->
+ <!-- It binds the remoting invoker (transport protocol, callback configuration, -->
+ <!-- data marshalling, etc.) with the invocation handlers. -->
+ <mbean code="org.jboss.remoting.transport.Connector"
+ name="jboss.remoting:service=Connector,transport=socket"
+ display-name="Socket transport Connector">
+
+ <!-- Can either just specify the InvokerLocator attribute and not the invoker element in the -->
+ <!-- Configuration attribute, or do the full invoker configuration in the in invoker element -->
+ <!-- of the Configuration attribute. -->
+
+ <!-- Remember that if you do use more than one param on the uri, will have to include as a CDATA, -->
+ <!-- otherwise, parser will complain. -->
+ <!-- <attribute name="InvokerLocator"><![CDATA[socket://${jboss.bind.address}:4446/?datatype=invocation]]></attribute> -->
+
+ <attribute name="Configuration">
+ <!-- Using the following <invoker> element instead of the InvokerLocator above because specific attributes needed. -->
+ <!-- If wanted to use any of the parameters below, can just add them as parameters to the url above if wanted use the InvokerLocator attribute. -->
+ <config>
+ <!-- Other than transport type and handler, none of these configurations are required (will just use defaults). -->
+ <invoker transport="socket">
+ <attribute name="dataType" isParam="true">invocation</attribute>
+ <attribute name="marshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationMarshaller</attribute>
+ <attribute name="unmarshaller" isParam="true">org.jboss.invocation.unified.marshall.InvocationUnMarshaller</attribute>
+ <!-- This will be port on which the marshall loader port runs on. -->
+ <!-- <attribute name="loaderport" isParam="true">4447</attribute> -->
+ <!-- The following are specific to socket invoker -->
+ <!-- <attribute name="numAcceptThreads">1</attribute>-->
+ <!-- <attribute name="maxPoolSize">303</attribute>-->
+ <!-- <attribute name="clientMaxPoolSize" isParam="true">304</attribute>-->
+ <attribute name="socketTimeout" isParam="true">600000</attribute>
+ <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
+ <attribute name="serverBindPort">4446</attribute>
+ <!-- <attribute name="clientConnectAddress">216.23.33.2</attribute> -->
+ <!-- <attribute name="clientConnectPort">7777</attribute> -->
+ <attribute name="enableTcpNoDelay" isParam="true">true</attribute>
+ <!-- <attribute name="backlog">200</attribute>-->
+ <!-- The following is for callback configuration and is independant of invoker type -->
+ <!-- <attribute name="callbackMemCeiling">30</attribute>-->
+ <!-- indicates callback store by fully qualified class name -->
+ <!-- <attribute name="callbackStore">org.jboss.remoting.CallbackStore</attribute>-->
+ <!-- indicates callback store by object name -->
+ <!-- <attribute name="callbackStore">jboss.remoting:service=CallbackStore,type=Serializable</attribute> -->
+ <!-- config params for callback store. if were declaring callback store via object name, -->
+ <!-- could have specified these config params there. -->
+ <!-- StoreFilePath indicates to which directory to write the callback objects. -->
+ <!-- The default value is the property value of 'jboss.server.data.dir' and if this is not set, -->
+ <!-- then will be 'data'. Will then append 'remoting' and the callback client's session id. -->
+ <!-- An example would be 'data\remoting\5c4o05l-9jijyx-e5b6xyph-1-e5b6xyph-2'. -->
+ <!-- <attribute name="StoreFilePath">callback</attribute>-->
+ <!-- StoreFileSuffix indicates the file suffix to use for the callback objects written to disk. -->
+ <!-- The default value for file suffix is 'ser'. -->
+ <!-- <attribute name="StoreFileSuffix">cst</attribute>-->
+ </invoker>
+
+ <!-- At least one handler is required by the connector. If have more than one, must decalre -->
+ <!-- different subsystem values. Otherwise, all invocations will be routed to the only one -->
+ <!-- that is declared. -->
+ <handlers>
+ <!-- can also specify handler by fully qualified classname -->
+ <handler subsystem="invoker">jboss:service=invoker,type=unified</handler>
+ <!-- The JSR88 deployment service StreamingTarget handler -->
+ <handler subsystem="JSR88">org.jboss.deployment.remoting.DeployHandler</handler>
+ </handlers>
+ </config>
+ </attribute>
+ <depends>jboss.remoting:service=NetworkRegistry</depends>
+ </mbean>
+
+
+ <!-- <mbean code="org.jboss.remoting.detection.jndi.JNDIDetector"-->
+ <!-- name="jboss.remoting:service=Detector,transport=jndi">-->
+ <!-- host to which the detector will connect to for the JNDI server. -->
+ <!-- <attribute name="Host">localhost</attribute>-->
+ <!-- port to which detector will connect to for the JNDI server. -->
+ <!-- <attribute name="Port">5555</attribute>-->
+ <!-- context factory string used when connecting to the JNDI server. -->
+ <!-- The default is org.jnp.interfaces.NamingContextFactory. -->
+ <!-- <attribute name="ContextFactory">org.acme.NamingContextFactory</attribute> -->
+ <!-- url package string to use when connecting to the JNDI server. -->
+ <!-- The default is org.jboss.naming:org.jnp.interfaces. -->
+ <!-- <attribute name="URLPackage">org.acme.naming</attribute> -->
+ <!-- Sets the number of detection iterations before manually pinging -->
+ <!-- remote server to make sure still alive. This is needed since remote server -->
+ <!-- could crash and yet still have an entry in the JNDI server, -->
+ <!-- thus making it appear that it is still there. The default value is 5. -->
+ <!-- <attribute name="CleanDetectionNumber">20</attribute>-->
+
+ <!-- Specifies the domains in which the detector will recognize -->
+ <!-- detections. If servers are not configured to be in these -->
+ <!-- domains, they will not be added to NetworkRegistry. -->
+ <!-- <attribute name="Configuration">-->
+ <!-- <domains>-->
+ <!-- <domain>roxanne</domain>-->
+ <!-- <domain>sparky</domain>-->
+ <!-- </domains>-->
+ <!-- </attribute>-->
+ <!-- </mbean>-->
+
+ <!-- ==================================================================== -->
+ <!-- Monitoring and Management -->
+ <!-- ==================================================================== -->
+
+ <!-- Uncomment to enable JMX monitoring of the bean cache
+ <mbean code="org.jboss.monitor.BeanCacheMonitor"
+ name="jboss.monitor:name=BeanCacheMonitor"/>
+ -->
+
+ <!-- Uncomment to enable JMX monitoring of the entity bean locking
+ <mbean code="org.jboss.monitor.EntityLockMonitor"
+ name="jboss.monitor:name=EntityLockMonitor"/>
+ -->
+
+ <!-- ==================================================================== -->
+ <!-- An MBean that is a registry for JDBC type-mapping metadata -->
+ <!-- ==================================================================== -->
+
+ <mbean code="org.jboss.ejb.plugins.cmp.jdbc.metadata.MetaDataLibrary"
+ name="jboss.jdbc:service=metadata"/>
+
+</server>
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulBean.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulBean.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulBean.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+import javax.ejb.Stateful;
+import javax.ejb.Local;
+import javax.ejb.Remote;
+import javax.naming.InitialContext;
+import org.jboss.logging.Logger;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+ at Stateful
+ at Local(StatefulLocal.class)
+ at Remote(StatefulRemote.class)
+public class StatefulBean implements StatefulRemote, StatefulLocal
+{
+ private static final Logger log = Logger.getLogger(StatefulBean.class);
+
+ private static int methodCount = 0;
+
+ public void localCall() throws Exception
+ {
+ InitialContext jndiContext = new InitialContext();
+ StatelessLocal stateless = (StatelessLocal)jndiContext.lookup("StatelessBean/local");
+ log.info("*** calling Local remotely ... " + jndiContext.getEnvironment());
+ stateless.method();
+ }
+
+ public int remoteCall() throws Exception
+ {
+ ++methodCount;
+ InitialContext jndiContext = new InitialContext();
+ StatefulRemote stateful = (StatefulRemote)jndiContext.lookup("StatefulBean/remote");
+ log.info("*** calling Remote ... " + jndiContext.getEnvironment());
+ return stateful.method();
+ }
+
+ public int method() throws Exception
+ {
+ ++methodCount;
+ log.info("*** method called " + methodCount);
+ return methodCount;
+ }
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulLocal.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulLocal.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulLocal.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+public interface StatefulLocal
+{
+ void localCall() throws Exception;
+
+ int remoteCall() throws Exception;
+
+ int method() throws Exception;
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulRemote.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulRemote.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatefulRemote.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+public interface StatefulRemote
+{
+ void localCall() throws Exception;
+
+ int remoteCall() throws Exception;
+
+ int method() throws Exception;
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessBean.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessBean.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessBean.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,66 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+import javax.ejb.Stateless;
+import javax.ejb.Local;
+import javax.ejb.Remote;
+import javax.naming.InitialContext;
+
+import org.jboss.logging.Logger;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+ at Stateless
+ at Local(StatelessLocal.class)
+ at Remote(StatelessRemote.class)
+public class StatelessBean implements StatelessRemote, StatelessLocal
+{
+ private static final Logger log = Logger.getLogger(StatelessBean.class);
+
+ private static int methodCount = 0;
+
+ public void localCall() throws Exception
+ {
+ InitialContext jndiContext = new InitialContext();
+ StatefulLocal stateful = (StatefulLocal)jndiContext.lookup("StatefulBean/local");
+ log.info("*** calling Local remotely ... " + jndiContext.getEnvironment());
+ stateful.method();
+ }
+
+ public int remoteCall() throws Exception
+ {
+ ++methodCount;
+ InitialContext jndiContext = new InitialContext();
+ StatelessRemote stateless = (StatelessRemote)jndiContext.lookup("StatelessBean/remote");
+ log.info("*** calling Remote ... " + jndiContext.getEnvironment());
+ return stateless.method();
+ }
+
+ public int method() throws Exception
+ {
+ ++methodCount;
+ log.info("*** method called " + methodCount);
+ return methodCount;
+ }
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessLocal.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessLocal.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessLocal.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,30 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+public interface StatelessLocal
+{
+ int method() throws Exception;
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessRemote.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessRemote.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/StatelessRemote.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+public interface StatelessRemote
+{
+ void localCall() throws Exception;
+
+ int remoteCall() throws Exception;
+
+ int method() throws Exception;
+}
Added: trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/unit/LocalTestCase.java
===================================================================
--- trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/unit/LocalTestCase.java (rev 0)
+++ trunk/ejb3/src/test/org/jboss/ejb3/test/localfromremote/unit/LocalTestCase.java 2007-08-01 22:51:03 UTC (rev 64417)
@@ -0,0 +1,95 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.localfromremote.unit;
+
+import org.jboss.ejb3.test.localfromremote.StatefulRemote;
+import org.jboss.ejb3.test.localfromremote.StatelessRemote;
+import org.jboss.logging.Logger;
+import org.jboss.test.JBossTestCase;
+import junit.framework.Test;
+
+/**
+ * @author <a href="mailto:bdecoste at jboss.com">William DeCoste</a>
+ */
+public class LocalTestCase extends JBossTestCase
+{
+ private static final Logger log = Logger.getLogger(LocalTestCase.class);
+
+ static boolean deployed = false;
+ static int test = 0;
+
+ public LocalTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testStatelessLocalFromRemote() throws Exception
+ {
+ StatefulRemote bean = (StatefulRemote) getInitialContext().lookup("StatefulBean/remote");
+ assertNotNull(bean);
+
+ try
+ {
+ bean.localCall();
+ fail("should not be allowed to call local interface remotely");
+ }
+ catch (javax.ejb.EJBException e)
+ {}
+ }
+
+ public void testStatelessRemoteFromRemote() throws Exception
+ {
+ StatefulRemote bean = (StatefulRemote) getInitialContext().lookup("StatefulBean/remote");
+ assertNotNull(bean);
+
+ int methodCount = bean.remoteCall();
+ assertEquals(1, methodCount);
+ }
+
+ public void testStatefulRemoteFromRemote() throws Exception
+ {
+ StatelessRemote bean = (StatelessRemote) getInitialContext().lookup("StatelessBean/remote");
+ assertNotNull(bean);
+
+ int methodCount = bean.remoteCall();
+ assertEquals(1, methodCount);
+ }
+
+ public void testStatefulLocalFromRemote() throws Exception
+ {
+ StatelessRemote bean = (StatelessRemote) getInitialContext().lookup("StatelessBean/remote");
+ assertNotNull(bean);
+
+ try
+ {
+ bean.localCall();
+ fail("should not be allowed to call local interface remotely");
+ }
+ catch (javax.ejb.EJBException e)
+ {}
+ }
+
+ public static Test suite() throws Exception
+ {
+ return getDeploySetup(LocalTestCase.class, "");
+ }
+}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list