[jboss-svn-commits] JBL Code SVN: r33755 - in labs/jbossesb/trunk/product: lib/ext and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 7 09:35:16 EDT 2010
Author: kevin.conner at jboss.com
Date: 2010-07-07 09:35:13 -0400 (Wed, 07 Jul 2010)
New Revision: 33755
Added:
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java
Removed:
labs/jbossesb/trunk/product/lib/ext/jboss-security-spi.jar
labs/jbossesb/trunk/product/lib/ext/jbosssx.jar
Modified:
labs/jbossesb/trunk/product/.classpath
labs/jbossesb/trunk/product/ivy.xml
labs/jbossesb/trunk/product/ivysettings.xml
labs/jbossesb/trunk/product/product.properties
labs/jbossesb/trunk/product/rosetta/build.xml
labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java
labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml
labs/jbossesb/trunk/product/samples/quickstarts/security_saml/picketlink-sts.war
labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt
labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml
labs/jbossesb/trunk/product/services/base-project-build.xml
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java
labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
Log:
Update to 4.7_CP2_ER4: JBESB-3328
Modified: labs/jbossesb/trunk/product/.classpath
===================================================================
--- labs/jbossesb/trunk/product/.classpath 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/.classpath 2010-07-07 13:35:13 UTC (rev 33755)
@@ -55,8 +55,8 @@
<classpathentry kind="lib" path="build/lib/javassist-3.6.0.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jaxb-api-2.1.jar"/>
<classpathentry kind="lib" path="build/lib/jaxb-xjc-2.1.4.jar"/>
- <classpathentry kind="lib" path="build/lib/jboss-4.2.2.GA.jar"/>
- <classpathentry kind="lib" path="build/lib/jbossall-client-4.2.2.GA.jar"/>
+ <classpathentry kind="lib" path="build/lib/jboss-4.2.3.GA.jar"/>
+ <classpathentry kind="lib" path="build/lib/jbossall-client-4.2.3.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-cache-1.2.4.SP2.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-classloader-2.0.6.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-classloading-2.0.6.GA.jar"/>
@@ -80,8 +80,8 @@
<classpathentry kind="lib" path="build/lib/jboss-metatype-2.1.0.SP1.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-profileservice-spi-5.1.0.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-reflect-2.0.2.GA.jar"/>
- <classpathentry kind="lib" path="build/lib/jbosssx-4.2.3.GA.jar"/>
- <classpathentry kind="lib" path="build/lib/jboss-system-4.2.2.GA.jar"/>
+ <classpathentry kind="lib" path="build/lib/jbosssx-2.0.3.SP1.jar"/>
+ <classpathentry kind="lib" path="build/lib/jboss-system-4.2.3.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-test-1.1.4.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jboss-vfs-2.1.2.GA.jar"/>
<classpathentry kind="lib" path="build/lib/jcr-1.0.jar"/>
@@ -116,8 +116,8 @@
<classpathentry kind="lib" path="build/lib/mina-core-1.1.7.jar"/>
<classpathentry kind="lib" path="build/lib/mvel2-2.0.12.jar"/>
<classpathentry kind="lib" path="build/lib/ognl-2.6.9.jar"/>
- <classpathentry kind="lib" path="build/lib/picketlink-fed-api-1.0.1.jar"/>
- <classpathentry kind="lib" path="build/lib/picketlink-fed-core-1.0.1.jar"/>
+ <classpathentry kind="lib" path="build/lib/picketlink-fed-api-1.0.3.final.jar"/>
+ <classpathentry kind="lib" path="build/lib/picketlink-fed-core-1.0.3.final.jar"/>
<classpathentry kind="lib" path="build/lib/quartz-1.5.2.jar"/>
<classpathentry kind="lib" path="build/lib/slf4j-api-1.4.3.jar"/>
<classpathentry kind="lib" path="build/lib/slf4j-log4j12-1.4.3.jar"/>
Modified: labs/jbossesb/trunk/product/ivy.xml
===================================================================
--- labs/jbossesb/trunk/product/ivy.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/ivy.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -39,9 +39,9 @@
<dependency org="jboss.aop" name="jboss-aop-jdk50" rev="1.5.6.GA"/>
<!-- dependency org="jboss.messaging" name="jboss-messaging-client" rev="1.4.1.CR1"/ -->
- <dependency org="jboss" name="jboss-system" rev="4.2.2.GA"/>
- <dependency org="jboss" name="jboss" rev="4.2.2.GA"/>
- <dependency org="jboss" name="jbossall-client" rev="4.2.2.GA"/>
+ <dependency org="jboss" name="jboss-system" rev="4.2.3.GA"/>
+ <dependency org="jboss" name="jboss" rev="4.2.3.GA"/>
+ <dependency org="org.jboss.client" name="jbossall-client" rev="4.2.3.GA"/>
<dependency org="com.jcraft" name="jsch" rev="0.1.38"/>
<dependency org="org.apache.juddi" name="uddi-ws" rev="3.0.2"/>
<dependency org="org.apache.juddi" name="juddi-client" rev="3.0.2"/>
@@ -158,17 +158,17 @@
<dependency org="javax.xml.bind" name="jaxb-api" rev="2.1"/>
- <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.1.0.20090318"/>
- <dependency org="jboss" name="jbosssx" rev="4.2.3.GA"/>
+ <dependency org="org.jboss.security" name="jboss-security-spi" rev="2.0.3.SP1"/>
+ <dependency org="org.jboss.security" name="jbosssx" rev="2.0.3.SP1"/>
<!-- JBoss Identity Federation -->
- <dependency org="org.picketlink" name="picketlink-fed-api" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-fed-core" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-fed-model" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-xmlsec-model" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-bindings" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-bindings-jboss" rev="1.0.1"/>
- <dependency org="org.picketlink" name="picketlink-web" rev="1.0.1"/>
+ <dependency org="org.picketlink" name="picketlink-fed-api" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-fed-core" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-fed-model" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-xmlsec-model" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-bindings" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-bindings-jboss" rev="1.0.3.final"/>
+ <dependency org="org.picketlink" name="picketlink-web" rev="1.0.3.final"/>
<dependency org="org.apache" name="xmlsec" rev="1.4.3"/>
<!-- JOPR dependencies -->
Modified: labs/jbossesb/trunk/product/ivysettings.xml
===================================================================
--- labs/jbossesb/trunk/product/ivysettings.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/ivysettings.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -8,6 +8,9 @@
<url name="jboss" m2compatible="true">
<artifact pattern="http://repository.jboss.org/maven2/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
</url>
+ <url name="jboss-nexus" m2compatible="true">
+ <artifact pattern="https://repository.jboss.org/nexus/content/groups/public/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
+ </url>
<ibiblio name="ibiblio" m2compatible="true"/>
<url name="milyn" m2compatible="true">
<artifact pattern="http://dist.codehaus.org/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"/>
Deleted: labs/jbossesb/trunk/product/lib/ext/jboss-security-spi.jar
===================================================================
(Binary files differ)
Deleted: labs/jbossesb/trunk/product/lib/ext/jbosssx.jar
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/product.properties
===================================================================
--- labs/jbossesb/trunk/product/product.properties 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/product.properties 2010-07-07 13:35:13 UTC (rev 33755)
@@ -8,6 +8,8 @@
# uncomment the following if you wish to use an app server installation
# for tests instead of the included jbossesb-server
#org.jboss.esb.server.home=<app server home>
+org.jboss.esb.server.home=/home/kevin/jbossas/jbossas5/jboss-5.1.0.GA
+#org.jboss.esb.server.home=/home/kevin/soa/jboss-eap-5.0/jboss-as
# Uncomment all the ftp properties if you wish to override the ftp server
#org.jboss.esb.test.ftp.hostname=<hostname:port>
@@ -17,4 +19,4 @@
# Uncomment the following if you want more control over junit
#org.jboss.esb.junit.haltonerror=yes
-#org.jboss.esb.junit.haltonfailure=yes
\ No newline at end of file
+#org.jboss.esb.junit.haltonfailure=yes
Modified: labs/jbossesb/trunk/product/rosetta/build.xml
===================================================================
--- labs/jbossesb/trunk/product/rosetta/build.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/build.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -31,10 +31,13 @@
<property name="org.jboss.esb.lib.dir" location="${org.jboss.esb.internal.dest}/lib"/>
<property name="org.jboss.esb.ext.lib.dir" location="${org.jboss.esb.root.dir}/lib/ext"/>
+ <property name="security.jars" value="jboss-security-spi*.jar jbosssx*.jar"/>
+
<path id="org.jboss.esb.rosetta.base.classpath">
<fileset dir="${org.jboss.esb.ext.lib.dir}" includes="*.jar"/>
<fileset dir="${org.jboss.esb.ext.lib.dir}/endorsed" includes="jboss-saaj.jar"/>
- <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar"/>
+ <fileset dir="${org.jboss.esb.lib.dir}" includes="${security.jars}"/>
+ <fileset dir="${org.jboss.esb.lib.dir}" includes="*.jar" excludes="${security.jars}"/>
<fileset dir="../../testlib" includes="emma*.jar"/>
<fileset dir="${org.jboss.esb.ext.lib.dir}/standalone" includes="*.jar"/>
<pathelement location="${schema101.classes.dir}"/>
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagator.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -20,18 +20,25 @@
*/
package org.jboss.internal.soa.esb.services.security;
+import java.security.AccessController;
import java.security.Principal;
-import java.util.Iterator;
+import java.security.PrivilegedAction;
import java.util.Set;
import javax.security.auth.Subject;
+import org.apache.log4j.Logger;
import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.jboss.security.RunAsIdentity;
import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityConstants;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SecurityContextFactory;
+import org.jboss.soa.esb.common.Configuration;
import org.jboss.soa.esb.services.security.SecurityConfig;
import org.jboss.soa.esb.services.security.SecurityContext;
import org.jboss.soa.esb.services.security.principals.User;
+import org.jboss.soa.esb.util.ClassUtil;
/**
* JBoss Application Server(AS) specifiec security context propagator.
@@ -41,6 +48,46 @@
public final class JBossASContextPropagator implements SecurityContextPropagator
{
/**
+ * Logger for this class.
+ */
+ private static final Logger LOGGER = Logger.getLogger(JBossASContextPropagator.class) ;
+
+ /**
+ * The default implementation of the security context operations.
+ */
+ private static final JBossASSecurityContextOperations OPERATIONS ;
+
+ static
+ {
+ JBossASSecurityContextOperations operations = null ;
+
+ final String implementation = Configuration.getJBossASSecurityContextOperationsImplementationClass() ;
+ if (implementation != null)
+ {
+ try
+ {
+ final Class<?> implementationClass = ClassUtil.forName(implementation, JBossASContextPropagator.class) ;
+ operations = (JBossASSecurityContextOperations)implementationClass.newInstance() ;
+ }
+ catch (final Throwable th)
+ {
+ LOGGER.error("Unexpected exception creating security context operations implementation, falling back to default", th) ;
+ }
+ }
+
+ if (operations == null)
+ {
+ operations = (isSecurityContextAssociationPresent() ? new AS5SecurityContextOperations() : new AS4SecurityContextOperations()) ;
+ }
+
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Default JBossASSecurityContextOperations initialised to " + operations.getClass().getName()) ;
+ }
+ OPERATIONS = operations ;
+ }
+
+ /**
* Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
*
* @param context The SecurityContext holding the subject to push/propagate. May not be null.
@@ -48,25 +95,50 @@
*/
public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config)
{
+ pushSecurityContext(context, authCredentials, config, OPERATIONS) ;
+ }
+
+ /**
+ * Pushed the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+ *
+ * @param context The SecurityContext holding the subject to push/propagate. May not be null.
+ * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+ * @param operations The implementation of the security context operations or null.
+ */
+ public void pushSecurityContext(final SecurityContext context, Set<?> authCredentials, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+ {
AssertArgument.isNotNull(context, "context");
final Subject subject = context.getSubject();
final Principal principal = getPrincipal(subject);
// associate the subject with jboss security
- Object credential = null;
+ final Object credential ;
if (authCredentials != null && authCredentials.isEmpty() == false)
{
credential = authCredentials.iterator().next();
}
- SecurityAssociation.pushSubjectContext(subject, principal, credential);
-
-
- if (isRunAsSet(config))
+ else
{
- // associate the runAs role with jboss security
- SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(config.getRunAs(), principal.getName()));
+ credential = null ;
}
+
+ final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+
+ final String domain = context.getDomain() ;
+ if (System.getSecurityManager() == null)
+ {
+ ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+ }
+ else
+ {
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ ops.pushSecurityContext(principal, credential, subject, domain, config) ;
+ return null ;
+ }
+ }) ;
+ }
}
/**
@@ -77,16 +149,45 @@
*/
public void popSecurityContext(final SecurityContext context, final SecurityConfig config)
{
- // diassociate the subject with jboss security
- SecurityAssociation.popSubjectContext();
+ popSecurityContext(context, config, OPERATIONS) ;
+ }
- if (isRunAsSet(config))
+ /**
+ * Pops the subject by calling {@link SecurityAssociation#pushSubjectContext(Subject, Principal, Object)}.
+ *
+ * @param context The SecurityContext holding the subject to push/propagate. Can be null.
+ * @param config The SecurityConfig which contains the information specified from the security configuration element. Can be null.
+ * @param operations The implementation of the security context operations or null.
+ */
+ public void popSecurityContext(final SecurityContext context, final SecurityConfig config, final JBossASSecurityContextOperations operations)
+ {
+ final JBossASSecurityContextOperations ops = getSecurityContextOperations(operations) ;
+
+ if (System.getSecurityManager() == null)
{
- // associate the runAs role with jboss security
- SecurityAssociation.popRunAsIdentity();
+ ops.popSecurityContext(config) ;
}
+ else
+ {
+ AccessController.doPrivileged(new PrivilegedAction<Object>() {
+ public Object run() {
+ ops.popSecurityContext(config) ;
+ return null ;
+ }
+ }) ;
+ }
}
+ /**
+ * Get the implementation of the security context operations.
+ * @param operations The specified implementation or null.
+ * @return The specified implementation or default implementation.
+ */
+ private JBossASSecurityContextOperations getSecurityContextOperations(final JBossASSecurityContextOperations operations)
+ {
+ return (operations != null ? operations : OPERATIONS) ;
+ }
+
private Principal getPrincipal( final Subject subject)
{
for (Principal principal : subject.getPrincipals())
@@ -96,9 +197,103 @@
return new User("NullPrincipal");
}
- private boolean isRunAsSet(final SecurityConfig config)
+ /**
+ * The security context operations interface.
+ * @author kevin
+ */
+ public interface JBossASSecurityContextOperations
{
- return config != null && config.getRunAs() != null;
+ public void pushSecurityContext(final Principal principal, final Object credential,
+ final Subject subject, final String domain, final SecurityConfig securityConfig) ;
+
+ public void popSecurityContext(final SecurityConfig securityConfig) ;
}
+ /**
+ * The AS4 implementation of the security context operations.
+ * @author kevin
+ */
+ public static class AS4SecurityContextOperations implements JBossASSecurityContextOperations
+ {
+ public void pushSecurityContext(final Principal principal, final Object credential,
+ final Subject subject, final String domain, final SecurityConfig securityConfig)
+ {
+ try
+ {
+ SecurityAssociation.pushSubjectContext(subject, principal, credential) ;
+ if ((securityConfig != null) && securityConfig.hasRunAs())
+ {
+ SecurityAssociation.pushRunAsIdentity(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+ }
+ }
+ catch (final Exception ex)
+ {
+ throw new RuntimeException("Unexpected exception creating security context", ex) ;
+ }
+ }
+
+ public void popSecurityContext(final SecurityConfig securityConfig)
+ {
+ if ((securityConfig != null) && securityConfig.hasRunAs())
+ {
+ SecurityAssociation.popRunAsIdentity() ;
+ }
+ SecurityAssociation.popSubjectContext() ;
+ }
+ }
+
+ /**
+ * The AS5 implementation of the security context operations.
+ * @author kevin
+ */
+ public static class AS5SecurityContextOperations implements JBossASSecurityContextOperations
+ {
+ public void pushSecurityContext(final Principal principal, final Object credential,
+ final Subject subject, final String domain, final SecurityConfig securityConfig)
+ {
+ final String securityDomain = domain == null ? SecurityConstants.DEFAULT_APPLICATION_POLICY : domain ;
+ try
+ {
+ final org.jboss.security.SecurityContext securityContext =
+ SecurityContextFactory.createSecurityContext(principal, credential, subject, securityDomain) ;
+ SecurityContextAssociation.setSecurityContext(securityContext) ;
+ if ((securityConfig != null) && securityConfig.hasRunAs())
+ {
+ securityContext.setOutgoingRunAs(new RunAsIdentity(securityConfig.getRunAs(), principal.getName()));
+ }
+ }
+ catch (final Exception ex)
+ {
+ throw new RuntimeException("Unexpected exception creating security context", ex) ;
+ }
+ }
+
+ public void popSecurityContext(final SecurityConfig securityConfig)
+ {
+ final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+ if(securityContext != null)
+ {
+ if ((securityConfig != null) && securityConfig.hasRunAs())
+ {
+ securityContext.setOutgoingRunAs(null) ;
+ }
+ SecurityContextAssociation.clearSecurityContext() ;
+ }
+ }
+ }
+
+ private static boolean isSecurityContextAssociationPresent()
+ {
+ try
+ {
+ ClassUtil.forName("org.jboss.security.SecurityContextAssociation", JBossASContextPropagator.class) ;
+ return true ;
+ }
+ catch (final ClassNotFoundException cnfe) {} // ignore
+ catch (final Throwable th)
+ {
+ LOGGER.debug("Exception checking for SecurityContextAssociation", th) ;
+ }
+ return false ;
+ }
}
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -32,6 +32,7 @@
import javax.naming.NamingException;
import org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.KeyValuePair;
import org.jboss.soa.esb.helpers.NamingContextException;
@@ -622,8 +623,18 @@
{
return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS);
}
-
+
/**
+ * The JBossASSecurityContextOperations implementation class to use.
+ *
+ * @return String The fully qualified name of the JBossASSecurityContextOperations implementation class
+ */
+ public static String getJBossASSecurityContextOperationsImplementationClass()
+ {
+ return ModulePropertyManager.getPropertyManager(ModulePropertyManager.SECURITY_MODULE).getProperty(Environment.SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS);
+ }
+
+ /**
* Get the bind address.
* @return the bind address.
*/
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -255,6 +255,7 @@
public static final String SECURITY_SERVICE_SEAL_KEYSIZE = "org.jboss.soa.esb.services.security.sealKeySize";
public static final String SECURITY_SERVICE_CONTEXT_TIMEOUT = "org.jboss.soa.esb.services.security.contextTimeout";
public static final String SECURITY_SERVICE_CONTEXT_PROPAGATOR_CLASS= "org.jboss.soa.esb.services.security.contextPropagatorImplementationClass";
+ public static final String SECURITY_JBOSSAS_SECURITY_CONTEXT_OPERATIONS_CLASS = "org.jboss.internal.soa.esb.services.security.jbossasSecurityContextOperationsImplementationClass" ;
public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE = "org.jboss.soa.esb.services.security.publicKeystore";
public static final String SECURITY_SERVICE_PUBLIC_KEYSTORE_TYPE = "org.jboss.soa.esb.services.security.publicKeystoreType";
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -520,7 +520,8 @@
final SecurityService securityService = SecurityServiceFactory.getSecurityService();
- if (securityContext == null || !securityContext.isValid())
+ final String moduleName = securityConf.getModuleName() ;
+ if (securityContext == null || !securityContext.isValid() || ((moduleName != null) && !moduleName.equals(securityContext.getDomain())))
{
if (authRequest == null)
{
@@ -528,7 +529,7 @@
}
// No existing security context exist or it had expired. Create a new one to drive the autentication.
- securityContext = new SecurityContext(new Subject(), getSecurityContextTimeout(securityConf));
+ securityContext = new SecurityContext(new Subject(), getSecurityContextTimeout(securityConf), moduleName);
// Authenticate the caller
securityService.authenticate(securityConf, securityContext, authRequest);
Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/security/SecurityContext.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -85,10 +85,15 @@
private final long timeout ;
/**
+ * The name of the domain.
+ */
+ private String domain ;
+
+ /**
* Time of creation.
*/
private long timeOfCreation = System.currentTimeMillis();
-
+
/**
* Creates a SecurityContext with a default Subject.
*/
@@ -106,6 +111,7 @@
{
this(subject, globalConfiguredTimeout) ;
}
+
/**
* Creates a SecurityContext associating the passed in Subject with it.
*
@@ -114,6 +120,18 @@
*/
public SecurityContext(final Subject subject, final long timeout)
{
+ this(subject, timeout, null) ;
+ }
+
+ /**
+ * Creates a SecurityContext associating the passed in Subject with it.
+ *
+ * @param subject The Subject that is to be associated with this security context.
+ * @param timeout A timeout which specifies how long this Security Context is valid for. Must be a positiv value.
+ * @param domain The domain used to validate the security context.
+ */
+ public SecurityContext(final Subject subject, final long timeout, final String domain)
+ {
AssertArgument.isNotNull(subject, "subject");
this.subject = subject;
@@ -122,6 +140,7 @@
throw new IllegalArgumentException("'timeout' for SecurityContext must not be negative other then '-1' which indicates a SecurityContext that never expires.");
}
this.timeout = timeout;
+ this.domain = domain;
}
public boolean isCallerInRole( final String roleName )
@@ -206,6 +225,16 @@
return timeout;
}
+ /**
+ * Security domain for the context.
+ *
+ * @return The security domain for the context.
+ */
+ public String getDomain()
+ {
+ return domain;
+ }
+
public boolean isValid()
{
if ( timeout == -1 )
@@ -226,7 +255,7 @@
@Override
public String toString()
{
- return "SecurityContext [isValid " + isValid() + ", timeout :" + timeout + ", timeOfCreation : " + timeOfCreation + "]";
+ return "SecurityContext [isValid " + isValid() + ", timeout :" + timeout + ", domain " + domain + ", timeOfCreation : " + timeOfCreation + "]";
}
// package protected methods
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/security/JBossASContextPropagatorUnitTest.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -24,7 +24,12 @@
import javax.security.auth.Subject;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS4SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.AS5SecurityContextOperations;
+import org.jboss.internal.soa.esb.services.security.JBossASContextPropagator.JBossASSecurityContextOperations;
import org.jboss.security.SecurityAssociation;
+import org.jboss.security.SecurityContextAssociation;
+import org.jboss.security.SubjectInfo;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.services.security.SecurityConfig;
import org.jboss.soa.esb.services.security.SecurityConfigTestUtil;
@@ -45,6 +50,8 @@
public class JBossASContextPropagatorUnitTest
{
private JBossASContextPropagator propagator = new JBossASContextPropagator();
+ private JBossASSecurityContextOperations as4Operations = new AS4SecurityContextOperations() ;
+ private JBossASSecurityContextOperations as5Operations = new AS5SecurityContextOperations() ;
@Test
public void pushAndPop()
@@ -52,12 +59,12 @@
final SecurityConfig securityConfig = getSecurityConfig();
final SecurityContext context = getSecurityContext();
- propagator.pushSecurityContext(context, null, securityConfig);
+ propagator.pushSecurityContext(context, null, securityConfig, as4Operations);
Subject pushedSubject = SecurityAssociation.getSubject();
assertEquals(context.getSubject(), pushedSubject);
- propagator.popSecurityContext(context, securityConfig);
+ propagator.popSecurityContext(context, securityConfig, as4Operations);
pushedSubject = SecurityAssociation.getSubject();
assertNull(pushedSubject);
}
@@ -68,12 +75,12 @@
final SecurityConfig securityConfig = getSecurityConfig();
final SecurityContext context = getSecurityContext();
- propagator.pushSecurityContext(context, null, null);
+ propagator.pushSecurityContext(context, null, null, as4Operations);
Subject pushedSubject = SecurityAssociation.getSubject();
assertEquals(context.getSubject(), pushedSubject);
- propagator.popSecurityContext(context, securityConfig);
+ propagator.popSecurityContext(context, securityConfig, as4Operations);
pushedSubject = SecurityAssociation.getSubject();
assertNull(pushedSubject);
}
@@ -81,9 +88,57 @@
@Test
public void popWithNullSecurityConfig()
{
- propagator.popSecurityContext(null, null);
+ propagator.popSecurityContext(null, null, as4Operations);
}
+ @Test
+ public void pushAndPopAS5()
+ {
+ final SecurityConfig securityConfig = getSecurityConfig();
+ final SecurityContext context = getSecurityContext();
+
+ propagator.pushSecurityContext(context, null, securityConfig, as5Operations);
+
+ final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+ assertNotNull("securityContext", securityContext) ;
+
+ final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+ assertNotNull("subjectInfo", subjectInfo) ;
+
+ final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+ assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+ propagator.popSecurityContext(context, securityConfig, as5Operations);
+ assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+ }
+
+ @Test
+ public void pushAndPopWithNullSecurityConfigAS5()
+ {
+ final SecurityConfig securityConfig = getSecurityConfig();
+ final SecurityContext context = getSecurityContext();
+
+ propagator.pushSecurityContext(context, null, null, as5Operations);
+
+ final org.jboss.security.SecurityContext securityContext = SecurityContextAssociation.getSecurityContext() ;
+ assertNotNull("securityContext", securityContext) ;
+
+ final SubjectInfo subjectInfo = securityContext.getSubjectInfo() ;
+ assertNotNull("subjectInfo", subjectInfo) ;
+
+ final Subject pushedSubject = subjectInfo.getAuthenticatedSubject() ;
+ assertEquals("Subject comparison", context.getSubject(), pushedSubject);
+
+ propagator.popSecurityContext(context, securityConfig, as5Operations);
+ assertNull("securityContext", SecurityContextAssociation.getSecurityContext());
+ }
+
+ @Test
+ public void popWithNullSecurityConfigAS5()
+ {
+ propagator.popSecurityContext(null, null, as5Operations);
+ }
+
public static junit.framework.Test suite()
{
return new JUnit4TestAdapter(JBossASContextPropagatorUnitTest.class);
Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipelineUnitTest.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -52,6 +52,9 @@
public class ActionProcessingPipelineUnitTest extends TestCase
{
+ private static final String DOMAIN = "SuccessfulLogin" ;
+ private static final String DIFF_DOMAIN = "UnsuccessfulLogin" ;
+
private String jbossEsbProperties;
public void testProperty() {
@@ -450,7 +453,7 @@
public void testSecuredWithoutExistingSecurityContextOrAuthenticationRequest() throws ConfigurationException
{
final ConfigTree configTree = new ConfigTree("parent") ;
- addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -469,7 +472,7 @@
{
final ConfigTree configTree = new ConfigTree("parent") ;
// Add the security configuration.
- addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -503,7 +506,7 @@
public void testSecuredWithPreExistingSecurityContext() throws Exception
{
final ConfigTree configTree = new ConfigTree("parent") ;
- addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -519,7 +522,7 @@
subject.getPublicCredentials().add(publicCred);
// Create and encrypt the security context. This simulates a call for a service that has already been authentcated.
- final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout());
+ final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout(), DOMAIN);
final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
final Message message = MessageFactory.getInstance().getMessage();
message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
@@ -537,7 +540,7 @@
public void testSecuredWithExistingSecurityContextWhichHasExpired() throws Exception
{
final ConfigTree configTree = new ConfigTree("parent") ;
- addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -557,7 +560,7 @@
// Create and encrypt the security context. This simulates a call for a service
// that has already been authentcated...but with a very short timeout.
- final SecurityContext securityContext = new SecurityContext(subject, 10);
+ final SecurityContext securityContext = new SecurityContext(subject, 10, DOMAIN);
TimeUnit.SECONDS.sleep(1);
@@ -579,7 +582,7 @@
// setup config tree
final ConfigTree configTree = new ConfigTree("parent") ;
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
- final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null, timeout);
+ final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, DOMAIN, null, timeout);
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
@@ -597,7 +600,7 @@
{
final ConfigTree configTree = new ConfigTree("parent") ;
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
- final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", null);
+ final ConfigTree securityConfigTree = addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
@@ -614,7 +617,7 @@
{
final ConfigTree configTree = new ConfigTree("parent") ;
configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
- addSecurityConfig(configTree, "adminRole", null, "SuccessfulLogin", "noRole");
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, "noRole");
addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
@@ -628,7 +631,7 @@
final byte[] publicCred = "publicsecret".getBytes();
subject.getPublicCredentials().add(publicCred);
- final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout());
+ final SecurityContext securityContext = new SecurityContext(subject, SecurityContext.getConfigurationTimeout(), DOMAIN);
final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
final Message message = MessageFactory.getInstance().getMessage();
message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
@@ -640,6 +643,42 @@
checkOrder(MockActionInfo.getDestroyList()) ;
}
+ public void testSecuredWithDifferentDomain() throws Exception
+ {
+ final ConfigTree configTree = new ConfigTree("parent") ;
+ addSecurityConfig(configTree, "adminRole", null, DOMAIN, null);
+ configTree.setAttribute(ListenerTagNames.MEP_ATTRIBUTE_TAG, ListenerTagNames.MEP_ONE_WAY) ;
+
+ addAction(configTree, MockSecuredActionProcessor.class.getName(), "process", null, null) ;
+
+ final ActionProcessingPipeline pipeline = new ActionProcessingPipeline(configTree) ;
+ pipeline.initialise() ;
+ checkOrder(MockActionInfo.getInitialiseList()) ;
+
+
+ Subject subject = new Subject();
+ // add principal
+ User user = new User("AustinPowerwich");
+ subject.getPrincipals().add(user);
+ // add public credentials
+ byte[] publicCred = "publicsecret".getBytes();
+ subject.getPublicCredentials().add(publicCred);
+
+ // Create and encrypt the security context. This simulates a call for a service
+ // that has already been authenticated...but with a very long timeout.
+ final SecurityContext securityContext = new SecurityContext(subject, 1000 * 60 * 60 * 24 * 7, DIFF_DOMAIN);
+
+ final SealedObject sealedObject = SecurityContext.encryptContext(securityContext);
+ final Message message = MessageFactory.getInstance().getMessage();
+ message.getContext().setContext(SecurityService.CONTEXT, sealedObject);
+
+ final boolean processingResult = pipeline.process(message);
+ assertFalse("Processing should have failed as the SecurityContext was for a different domain", processingResult);
+
+ pipeline.destroy() ;
+ checkOrder(MockActionInfo.getDestroyList()) ;
+ }
+
public static void addAction(final ConfigTree configTree, final String actionName) {
addAction(configTree, actionName, null, null, null);
}
Modified: labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/load_generator/build.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -12,38 +12,8 @@
<delete dir="load_generator_classes"/>
</target>
- <target name="init-groovy-as4" depends="dependencies" if="jbossas4">
- <path id="groovy.classpath">
- <pathelement path="build/classes"/>
- <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy">
- <include name="jboss-aop-jdk50**/*.jar"/>
- </fileset>
- <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/lib" includes="*.jar"/>
- <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy/jbossesb.sar/lib" includes="*.jar" />
- <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deploy/jbossesb.sar/lib" includes="commons-*.jar" />
- <fileset dir="${org.jboss.esb.server.home}/client" includes="jbossall-client.jar" />
- <fileset dir="${org.jboss.esb.server.home}/lib/endorsed" includes="xercesImpl.jar" />
- </path>
-
- <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath" />
- </target>
-
- <target name="init-groovy-as5" depends="dependencies" if="jbossas5">
- <path id="groovy.classpath">
- <pathelement path="build/classes"/>
- <fileset dir="${org.jboss.esb.server.home}/lib">
- <include name="*.jar"/>
- </fileset>
- <fileset dir="${org.jboss.esb.server.home}/server/${org.jboss.esb.server.config}/deployers/esb.deployer/lib" includes="*.jar" />
- <fileset dir="${org.jboss.esb.server.home}/client" includes="jbossall-client.jar" />
- <fileset dir="${org.jboss.esb.server.home}/lib/endorsed" includes="xercesImpl.jar" />
- </path>
-
- <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath" />
- </target>
-
-
- <target name="compile-churn" depends="compile, init-groovy-as4, init-groovy-as5" description="compile groovy to bytecode">
+ <target name="compile-churn" depends="compile" description="compile groovy to bytecode">
+ <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc" classpathref="exec-classpath" />
<mkdir dir="load_generator_classes" />
<copy todir="load_generator_classes" overwrite="true">
<fileset dir="${basedir}/scripts/">
@@ -54,12 +24,12 @@
<include name="log4j.xml" />
</fileset>
</copy>
- <groovyc destdir="load_generator_classes" srcdir="${basedir}/scripts" includes="*.groovy" classpathref="groovy.classpath" />
+ <groovyc destdir="load_generator_classes" srcdir="${basedir}/scripts" includes="*.groovy" classpathref="exec-classpath" />
</target>
<target name="load-agent" depends="compile-churn" description="Test the load agent script/settings">
<java classname="JmsLoadAgent" >
- <classpath refid="groovy.classpath" />
+ <classpath refid="exec-classpath" />
<classpath location="load_generator_classes" />
<arg value="load_generator_classes/load.xml" />
</java>
@@ -69,7 +39,7 @@
<java classname="LoadReport" fork="true">
<classpath location="${org.jboss.esb.server.home}/client"/>
<classpath location="build/classes"/>
- <classpath refid="groovy.classpath"/>
+ <classpath refid="exec-classpath"/>
<classpath location="load_generator_classes"/>
<arg value="load_generator_classes/load.xml"/>
</java>
@@ -79,7 +49,7 @@
<java classname="LoadReport" fork="true">
<classpath location="${org.jboss.esb.server.home}/client"/>
<classpath location="build/classes"/>
- <classpath refid="groovy.classpath"/>
+ <classpath refid="exec-classpath"/>
<classpath location="load_generator_classes"/>
<arg line="load_generator_classes/load.xml admin admin"/>
</java>
Modified: labs/jbossesb/trunk/product/samples/quickstarts/security_saml/picketlink-sts.war
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/two_servers/readme.txt 2010-07-07 13:35:13 UTC (rev 33755)
@@ -25,6 +25,15 @@
Please refer to 'ant help-quickstarts' for prerequisites about the quickstarts
and a more detailed descripton of the different ways to run the quickstarts.
+Important
+=========
+ This quickstart is intended to be run with embedded databases. If you have altered
+ the default configuration to use a remote database then this setup will be duplicated,
+ and therefore shared, by both of the generated configurations. It may be necessary to
+ make additional changes to the configuration of those components which are sharing
+ a database, for example if JBoss Messaging is the current JMS provider then a unique
+ ServerPeerID must be configured within the messaging-service.xml configuration file.
+
To Run:
===========================
1. In a command terminal window in this folder ("Window1"),
Modified: labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/samples/quickstarts/webservice_proxy_security/war/resources/WEB-INF/web.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -17,8 +17,6 @@
<web-resource-collection>
<web-resource-name>webservice_proxy_security</web-resource-name>
<url-pattern>/*</url-pattern>
- <http-method>GET</http-method>
- <http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>friend</role-name>
Modified: labs/jbossesb/trunk/product/services/base-project-build.xml
===================================================================
--- labs/jbossesb/trunk/product/services/base-project-build.xml 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/base-project-build.xml 2010-07-07 13:35:13 UTC (rev 33755)
@@ -37,7 +37,7 @@
<pathelement location="build/${ant.project.name}.esb" />
<pathelement location="build/classes" />
<pathelement location="build/test/classes" />
- <fileset dir="${esb.main.lib}" includes="jboss-system-4.2.2.GA.jar" />
+ <fileset dir="${esb.main.lib}" includes="jboss-system-*.jar" />
<fileset dir="lib/ext" includes="*.jar" />
<fileset dir="lib/ext/build-time" includes="*.jar" />
<fileset dir="${esb.product.lib.ext}/endorsed" includes="jboss-saaj.jar" />
Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/AbstractJmsServiceFactory.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -23,7 +23,6 @@
import javax.naming.NamingException;
import org.jboss.jms.jndi.JMSProviderAdapter;
-import org.jboss.jms.jndi.JNDIProviderAdapter;
import org.jbpm.JbpmException;
import org.jbpm.svc.ServiceFactory;
@@ -55,9 +54,9 @@
private ConnectionFactory connectionFactory;
/**
- * The JMS provider adapter.
+ * The provider.
*/
- private JMSProviderAdapter jmsProviderAdapter ;
+ private Provider provider ;
/**
* Get the commitEnabled flag.
@@ -76,8 +75,8 @@
*/
protected Object lookup(String name) throws NamingException
{
- final JMSProviderAdapter adapter = getJMSProviderAdapter() ;
- final Context initial = adapter.getInitialContext() ;
+ final Provider provider = getProvider() ;
+ final Context initial = provider.getInitialContext() ;
try
{
return initial.lookup(name);
@@ -89,14 +88,14 @@
}
/**
- * Get the JMS provider adapter.
- * @return The JMS provider adapter.
+ * Get the provider.
+ * @return The provider.
* @throws NamingException For errors locating the adapter within JNDI.
*/
- protected JMSProviderAdapter getJMSProviderAdapter()
+ protected Provider getProvider()
throws NamingException
{
- if (jmsProviderAdapter == null)
+ if (provider == null)
{
if (providerAdapterJNDI != null)
{
@@ -120,21 +119,24 @@
{
initial.close();
}
- if ((adapter != null) && (adapter instanceof JMSProviderAdapter))
+ if (adapter != null)
{
- jmsProviderAdapter = (JMSProviderAdapter)adapter ;
+ if (adapter instanceof JMSProviderAdapter)
+ {
+ provider = new JMSProvider((JMSProviderAdapter)adapter) ;
+ }
+ else if (adapter instanceof Provider)
+ {
+ provider = (Provider)adapter ;
+ }
}
- else
- {
- jmsProviderAdapter = new JNDIProviderAdapter() ;
- }
}
- else
- {
- jmsProviderAdapter = new JNDIProviderAdapter() ;
- }
}
- return jmsProviderAdapter ;
+ if (provider == null)
+ {
+ provider = new DefaultProvider() ;
+ }
+ return provider ;
}
/**
@@ -147,16 +149,16 @@
{
try
{
- final JMSProviderAdapter adapter = getJMSProviderAdapter() ;
+ final Provider provider = getProvider() ;
final String jndiName ;
- final String adapterQueueFactory = adapter.getQueueFactoryRef() ;
+ final String adapterQueueFactory = provider.getQueueFactoryRef() ;
if (adapterQueueFactory != null)
{
jndiName = adapterQueueFactory ;
}
else
{
- final String adapterFactory = adapter.getFactoryRef() ;
+ final String adapterFactory = provider.getFactoryRef() ;
if (adapterFactory != null)
{
jndiName = adapterFactory ;
@@ -181,7 +183,7 @@
*/
public void close()
{
- jmsProviderAdapter = null;
+ provider = null;
connectionFactory = null;
}
}
Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/DefaultProvider.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+
+/**
+ * The default provider
+ */
+class DefaultProvider implements Provider
+{
+ /**
+ * Get the queue factory reference.
+ * @return The queue factory reference or null if not specified.
+ */
+ public String getQueueFactoryRef()
+ {
+ return null ;
+ }
+
+ /**
+ * Get the default factory reference.
+ * @return The default factory reference or null if not specified.
+ */
+ public String getFactoryRef()
+ {
+ return null ;
+ }
+
+ /**
+ * Get the initial context.
+ * @return The JNDI initial context.
+ * @throws NamingException For exceptions creating the context.
+ */
+ public Context getInitialContext()
+ throws NamingException
+ {
+ return new InitialContext() ;
+ }
+}
Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/JMSProvider.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+import org.jboss.jms.jndi.JMSProviderAdapter;
+
+
+/**
+ * The JMS provider
+ */
+class JMSProvider implements Provider
+{
+ /**
+ * The JMS provider adapter.
+ */
+ private final JMSProviderAdapter providerAdapter ;
+
+ /**
+ * Construct the JMS provider.
+ * @param providerAdapter The JMS provider adapter.
+ */
+ JMSProvider(final JMSProviderAdapter providerAdapter)
+ {
+ this.providerAdapter = providerAdapter ;
+ }
+
+ /**
+ * Get the queue factory reference.
+ * @return The queue factory reference or null if not specified.
+ */
+ public String getQueueFactoryRef()
+ {
+ return providerAdapter.getQueueFactoryRef() ;
+ }
+
+ /**
+ * Get the default factory reference.
+ * @return The default factory reference or null if not specified.
+ */
+ public String getFactoryRef()
+ {
+ return providerAdapter.getFactoryRef() ;
+ }
+
+ /**
+ * Get the initial context.
+ * @return The JNDI initial context.
+ * @throws NamingException For exceptions creating the context.
+ */
+ public Context getInitialContext()
+ throws NamingException
+ {
+ return providerAdapter.getInitialContext() ;
+ }
+}
Copied: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java (from rev 33752, labs/jbossesb/tags/JBESB_4_7_CP2_ER4/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java)
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java (rev 0)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/Provider.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat Middleware LLC, and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+package org.jboss.soa.esb.services.jbpm.integration;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+
+
+/**
+ * Provider interface
+ */
+public interface Provider
+{
+ /**
+ * Get the queue factory reference.
+ * @return The queue factory reference or null if not specified.
+ */
+ public String getQueueFactoryRef();
+
+ /**
+ * Get the default factory reference.
+ * @return The default factory reference or null if not specified.
+ */
+ public String getFactoryRef();
+
+ /**
+ * Get the initial context.
+ * @return The JNDI initial context.
+ * @throws NamingException For exceptions creating the context.
+ */
+ public Context getInitialContext()
+ throws NamingException;
+}
Modified: labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java 2010-07-07 12:37:09 UTC (rev 33754)
+++ labs/jbossesb/trunk/product/services/jbpm/src/main/java/org/jboss/soa/esb/services/jbpm/integration/msg/RetryExecutor.java 2010-07-07 13:35:13 UTC (rev 33755)
@@ -108,7 +108,6 @@
{
final Set<Long> monitoredJobs = new HashSet<Long>() ;
final long now = System.currentTimeMillis() ;
- int count = 0 ;
do
{
final Job job = jobSession.getFirstDueJob(RETRY_EXECUTOR, monitoredJobs) ;
@@ -119,7 +118,6 @@
monitoredJobs.add(Long.valueOf(job.getId())) ;
if (RETRY_EXECUTOR.equals(job.getLockOwner()))
{
- count++ ;
job.setLockOwner(null) ;
if (job instanceof Timer)
{
@@ -138,7 +136,7 @@
}
}
}
- while(count < maxRetryJobs) ;
+ while(monitoredJobs.size() < maxRetryJobs) ;
}
}
catch (final Throwable th)
More information about the jboss-svn-commits
mailing list