You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/04/29 07:59:46 UTC

svn commit: r769670 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/ components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/ components/jetspeed-portal/src/test/...

Author: rwatler
Date: Wed Apr 29 05:59:46 2009
New Revision: 769670

URL: http://svn.apache.org/viewvc?rev=769670&view=rev
Log:
JS2-893: Cluster Safe Portlet Application Manager Improvements
-----------------------------------------------------------------
- support concurrent startPortletApplication() invocation in both the default PAM and VersionedPAM implementations
- propagate error messages properly in multiple server test cases


Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/TestDatabasePageManagerCache.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/TestPortletApplicationManager.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/deployment.xml

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/TestDatabasePageManagerCache.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/TestDatabasePageManagerCache.java?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/TestDatabasePageManagerCache.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-manager/src/test/java/org/apache/jetspeed/page/cache/TestDatabasePageManagerCache.java Wed Apr 29 05:59:46 2009
@@ -563,7 +563,7 @@
         
         private void logProcessLine(final String line)
         {
-            if (!line.contains("INFO") && (line.contains("ERROR") || line.contains("Exception") || line.matches("^\\s+at\\s")))
+            if (!line.contains("INFO") && (line.contains("ERROR") || line.contains("Exception") || line.matches("\\s+at\\s.*")))
             {
                 log.error("{"+name+"} "+line);
             }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManager.java Wed Apr 29 05:59:46 2009
@@ -44,7 +44,7 @@
 /**
  * PortletApplicationManager
  *
- * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
+ * @author <a href="mailto:ate@douma.nu">Ate Doumaxs</a>
  * @version $Id$
  */
 public class PortletApplicationManager implements PortletApplicationManagement
@@ -53,14 +53,14 @@
     private static int DEFAULT_MAX_RETRIED_STARTS = 10; // 10 times retry PA
     private static final Logger    log = LoggerFactory.getLogger("deployment");
 
-    protected PortletFactory        portletFactory;
-    protected PortletRegistry       registry;
-    protected SearchEngine          searchEngine;
-    protected RoleManager           roleManager;
-    protected PermissionManager     permissionManager;
-    protected boolean               autoCreateRoles;
-    protected List<String>          permissionRoles;
-    protected int  descriptorChangeMonitorInterval = DEFAULT_DESCRIPTOR_CHANGE_MONITOR_INTERVAL;
+    protected PortletFactory             portletFactory;
+    protected PortletRegistry            registry;
+    protected SearchEngine               searchEngine;
+    protected RoleManager                roleManager;
+    protected PermissionManager          permissionManager;
+    protected boolean                    autoCreateRoles;
+    protected List<String>               permissionRoles;
+    protected int                        descriptorChangeMonitorInterval = DEFAULT_DESCRIPTOR_CHANGE_MONITOR_INTERVAL;
     /**
      * holds the max number of retries in case of unsuccessful PA start
      * this addresses possible startup errors in clustered environments
@@ -72,6 +72,9 @@
     protected NodeManager nodeManager;
     protected JetspeedDescriptorService descriptorService;
     
+    protected PortletApplicationManagement pamProxy;
+    protected boolean startOnSetPAMProxy;
+    
     /**
      * Creates a new PortletApplicationManager object.
      */
@@ -91,14 +94,28 @@
         this.descriptorService  = descriptorService;
     }
     
+    public void setPAMProxy(PortletApplicationManagement pamProxy)
+    {
+        this.pamProxy = pamProxy;
+        if (!started && startOnSetPAMProxy)
+        {
+            start();
+        }
+    }
+    
     public void start()
     {
+        if ( pamProxy == null)
+        {
+            startOnSetPAMProxy = true;
+            return;
+        }
         if ( descriptorChangeMonitorInterval > 0 )
         {
             try
             {
                 monitor = new DescriptorChangeMonitor(Thread.currentThread().getThreadGroup(),
-                                                "PortletApplicationManager Descriptor Change Monitor Thread", this, descriptorChangeMonitorInterval, maxRetriedStarts);
+                                                "PortletApplicationManager Descriptor Change Monitor Thread", pamProxy, descriptorChangeMonitorInterval, maxRetriedStarts);
 
                 monitor.setContextClassLoader(getClass().getClassLoader());
                 monitor.start();
@@ -157,7 +174,7 @@
         throws RegistryException
     {
         checkStarted();
-        startPA(contextName, "/"+contextName, warStruct, paClassLoader, PortletApplication.LOCAL);
+        retryStartPortletApplication(contextName, "/"+contextName, warStruct, paClassLoader, PortletApplication.LOCAL);
     }
 
     public void startPortletApplication(String contextName, FileSystemHelper warStruct,
@@ -175,15 +192,58 @@
         Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
         try
         {
-            startPA(contextName, contextPath, warStruct, paClassLoader, PortletApplication.WEBAPP);
+            retryStartPortletApplication(contextName, contextPath, warStruct, paClassLoader, PortletApplication.WEBAPP);
         }
         finally
         {
             Thread.currentThread().setContextClassLoader(contextClassLoader);
-        }
-        
+        }        
     }    
 
+    protected void retryStartPortletApplication(String contextName, String contextPath, FileSystemHelper warStruct, ClassLoader paClassLoader, int paType) throws RegistryException
+    {
+        // Retry to start application according to configuration. Note
+        // that this method is not declared transactional to allow clean
+        // retries within a single transaction.
+        RegistryException tryStartException = null;
+        for (int i = 0; (i < maxRetriedStarts+1); i++)
+        {
+            try
+            {
+                // try to start portlet application
+                pamProxy.tryStartPortletApplication(contextName, contextPath, warStruct, paClassLoader, paType, 0, true);
+                // continue on success
+                tryStartException = null;
+                break;
+            }
+            catch (RegistryException re)
+            {
+                // save exception
+                tryStartException = re;
+            }
+            // brief pause between retries to let portlet application
+            // state settle
+            try
+            {
+                Thread.sleep(50);
+            }
+            catch (InterruptedException ie)
+            {
+            }
+        }
+        // throw try start exception
+        if (tryStartException != null)
+        {
+            log.error("Unable to start portlet application after "+maxRetriedStarts+" retries: "+tryStartException, tryStartException);
+            throw tryStartException;
+        }
+    }
+
+    public void tryStartPortletApplication(String contextName, String contextPath, FileSystemHelper warStruct, ClassLoader paClassLoader, int paType, long checksum, boolean silent) throws RegistryException
+    {
+        attemptStartPA(contextName, contextPath, warStruct, paClassLoader, paType, checksum, silent);
+    }
+
     public void stopLocalPortletApplication(String contextName)
         throws RegistryException
     {
@@ -271,7 +331,7 @@
     }
 
     protected PortletApplication registerPortletApplication(PortletApplicationWar paWar,
-        PortletApplication oldPA, int paType, ClassLoader paClassLoader)
+        PortletApplication oldPA, int paType, ClassLoader paClassLoader, boolean silent)
         throws RegistryException
     {
         long revision = 0;
@@ -305,7 +365,10 @@
         {
             String msg = "Failed to load portlet application for "
                 + paWar.getPortletApplicationName();
-            log.error(msg, e);
+            if (!silent || log.isDebugEnabled())
+            {
+                log.error(msg, e);
+            }
             throw new RegistryException(msg);
         }
 
@@ -349,7 +412,10 @@
         catch (Exception e)
         {
             String msg = "Failed to register portlet application, " + paName;
-            log.error(msg, e);
+            if (!silent || log.isDebugEnabled())
+            {
+                log.error(msg, e);
+            }
 
             if (registered)
             {
@@ -359,7 +425,10 @@
                 }
                 catch (Exception re)
                 {
-                    log.error("Failed to rollback registration of portlet application " + paName, re);
+                    if (!silent || log.isDebugEnabled())
+                    {
+                        log.error("Failed to rollback registration of portlet application " + paName, re);
+                    }
                 }
             }
 
@@ -367,15 +436,8 @@
         }
     }
 
-    protected void startPA(String contextName, String contextPath, FileSystemHelper warStruct,
-            ClassLoader paClassLoader, int paType)
-    throws RegistryException
-    {
-        startPA(contextName, contextPath, warStruct, paClassLoader, paType, 0);
-    }
-    
-    protected void startPA(String contextName, String contextPath, FileSystemHelper warStruct,
-            ClassLoader paClassLoader, int paType, long checksum)
+    protected void attemptStartPA(String contextName, String contextPath, FileSystemHelper warStruct,
+            ClassLoader paClassLoader, int paType, long checksum, boolean silent)
     throws RegistryException
     {
         boolean register = true;
@@ -403,7 +465,7 @@
             {
                 if (paClassLoader == null)
                 {
-                    paClassLoader = paWar.createClassloader(getClass().getClassLoader());
+                    paClassLoader = paWar.createClassloader(this.getClass().getClassLoader());
                 }                
                 // create checksum from PA descriptors
                 checksum = paWar.getPortletApplicationChecksum();                
@@ -416,7 +478,10 @@
             catch (IOException e)
             {
                 String msg = "Invalid PA WAR for " + contextName;
-                log.error(msg, e);
+                if (!silent || log.isDebugEnabled())
+                {
+                    log.error(msg, e);
+                }
                 if ( paClassLoader == null )
                 {
                     // nothing to be done about it anymore: this pa is beyond repair :(
@@ -460,7 +525,7 @@
                         {
                             log.debug("Register new portlet application " + contextName + ".");
                         }
-                        pa = registerPortletApplication(paWar, pa, paType, paClassLoader);
+                        pa = registerPortletApplication(paWar, pa, paType, paClassLoader, silent);
                     }
                     catch (Exception e)
                     {
@@ -545,7 +610,7 @@
                         {
                             log.debug("Register (deploy=true) Portlet application " + contextName + " in database.");
                         }
-                        pa = registerPortletApplication(paWar, pa, paType, paClassLoader);
+                        pa = registerPortletApplication(paWar, pa, paType, paClassLoader, silent);
                     }
                     else
                         if (reregister)
@@ -593,7 +658,10 @@
         {
             String msg = "Error starting portlet application " + contextName;
             
-            log.error(msg, e);
+            if (!silent || log.isDebugEnabled())
+            {
+                log.error(msg, e);
+            }
             // monitor PA for changes
             // do not add monitor if a monitor already exists
             if (!monitored && changeMonitor != null)
@@ -858,13 +926,13 @@
             }
         }        
 
-        private PortletApplicationManager pam;
+        private PortletApplicationManagement pam;
         private long interval;
         private boolean started = true;
         private ArrayList monitorInfos;
         private int maxRetriedStarts;
 
-        public DescriptorChangeMonitor(ThreadGroup group, String name, PortletApplicationManager pam, long interval, int maxretriedStarts)
+        public DescriptorChangeMonitor(ThreadGroup group, String name, PortletApplicationManagement pam, long interval, int maxretriedStarts)
         {
             super(group, name);
             this.pam = pam;
@@ -989,8 +1057,8 @@
                                 {
                                     try
                                     {
-                                        pam.startPA(monitorInfo.getContextName(), monitorInfo.getContextPath(), new DirectoryHelper(monitorInfo.getPADir()),
-                                                monitorInfo.getPAClassLoader(), monitorInfo.getPortletApplicationType(), monitorInfo.getChecksum());
+                                        pam.tryStartPortletApplication(monitorInfo.getContextName(), monitorInfo.getContextPath(), new DirectoryHelper(monitorInfo.getPADir()),
+                                                                       monitorInfo.getPAClassLoader(), monitorInfo.getPortletApplicationType(), monitorInfo.getChecksum(), true);
                                         // great! we have a successful start. set unsuccessful starts to 0
                                         monitorInfo.setUnsuccessfulStarts(0);
                                     }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/tools/pamanager/VersionedPortletApplicationManager.java Wed Apr 29 05:59:46 2009
@@ -83,8 +83,8 @@
     }
         
     // override to implement versioning logic
-    protected void startPA(String contextName, String contextPath, FileSystemHelper warStruct,
-            ClassLoader paClassLoader, int paType, long checksum)
+    protected void attemptStartPA(String contextName, String contextPath, FileSystemHelper warStruct,
+            ClassLoader paClassLoader, int paType, long checksum, boolean silent)
     throws RegistryException
     {
         PortletApplicationWar paWar = null;
@@ -101,7 +101,10 @@
             catch (IOException e)
             {
                 String msg = "Invalid PA WAR for " + contextName;
-                log.error(msg, e);
+                if (!silent || log.isDebugEnabled())
+                {
+                    log.error(msg, e);
+                }
                 if ( paClassLoader == null )
                 {
                     // nothing to be done about it anymore: this pa is beyond repair :(
@@ -115,7 +118,7 @@
             if (regPA == null)
             {
                 System.out.println("**** New portlet app found - registration required..." + contextName);
-                regPA = this.registerPortletApplication(paWar, null, paType, paClassLoader);
+                regPA = registerPortletApplication(paWar, null, paType, paClassLoader, silent);
             }
             else
             {
@@ -126,7 +129,7 @@
                 if (newVersion.compareTo(regVersion) > 0)
                 {
                     System.out.println(" - **** New Version is greater: registration required... " + contextName);
-                    regPA = this.registerPortletApplication(paWar, regPA, paType, paClassLoader);                    
+                    regPA = registerPortletApplication(paWar, regPA, paType, paClassLoader, silent);                    
                 }
                 else
                 {
@@ -142,7 +145,10 @@
         catch (Exception e)
         {
             String msg = "Error starting portlet application " + contextName;            
-            log.error(msg, e);
+            if (!silent || log.isDebugEnabled())
+            {
+                log.error(msg, e);
+            }
             throw new RegistryException(msg, e);
         }
     }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/TestPortletApplicationManager.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/TestPortletApplicationManager.java?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/TestPortletApplicationManager.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/test/java/org/apache/jetspeed/tools/pamanager/TestPortletApplicationManager.java Wed Apr 29 05:59:46 2009
@@ -49,14 +49,8 @@
 {
     private static final Log log = LogFactory.getLog(TestPortletApplicationManager.class);
 
-    /*
-     * TODO: this test case is properly run with concurrent PAM access
-     * enabled, use of the versioned PAM, and with multiple restarts.
-     * Test will not pass with those settings, so these are being used
-     * temporarily until these issues are addressed.
-     */
-    public static final boolean TEST_CONCURRENT_PAM_ACCESS = false;
-    public static final boolean TEST_USE_VERSIONED_PAM = true;
+    public static final boolean TEST_CONCURRENT_PAM_ACCESS = true;
+    public static final boolean TEST_USE_VERSIONED_PAM = false;
     public static final int TEST_PORTLET_APPLICATION_RESTARTS = 5;
 
     public static final String CONTEXT_NAME = "test-pa";
@@ -215,6 +209,7 @@
                 if (TEST_CONCURRENT_PAM_ACCESS)
                 {
                     // start portlet application asynchronously in background threads per server
+                    log.info("test concurrent register/start/stop portlet application, iteration "+i+"...");
                     TestExecuteThread startPortletApplication0 = new TestExecuteThread(server0, "portletApplicationManagerServer.startPortletApplication();");
                     TestExecuteThread startPortletApplication1 = new TestExecuteThread(server1, "portletApplicationManagerServer.startPortletApplication();");
                     startPortletApplication0.start();
@@ -227,6 +222,7 @@
                 else
                 {
                     // stop portlet application synchronously
+                    log.info("test serial register/start/stop portlet application, iteration "+i+"...");
                     result = server0.execute("portletApplicationManagerServer.startPortletApplication();");
                     assertTrue(!result.contains("Exception"));
                     result = server1.execute("portletApplicationManagerServer.startPortletApplication();");
@@ -238,6 +234,7 @@
                 result = server0.execute("portletApplicationManagerServer.stopPortletApplication();");
                 assertTrue(!result.contains("Exception"));
                 // unregister portlet application
+                log.info("test unregister portlet application, iteration "+i+"...");
                 try
                 {
                     portletApplicationManager.unregisterPortletApplication(CONTEXT_NAME);
@@ -430,7 +427,7 @@
         
         private void logProcessLine(final String line)
         {
-            if (!line.contains("INFO") && (line.contains("ERROR") || line.contains("Exception") || line.matches("^\\s+at\\s")))
+            if (!line.contains("INFO") && (line.contains("ERROR") || line.contains("Exception") || line.matches("\\s+at\\s.*")))
             {
                 log.error("{"+name+"} "+line);
             }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/tools/pamanager/PortletApplicationManagement.java Wed Apr 29 05:59:46 2009
@@ -47,4 +47,6 @@
   void startLocalPortletApplication(String contextName, FileSystemHelper warStruct, ClassLoader paClassLoader) throws RegistryException;
   void stopLocalPortletApplication(String contextName) throws RegistryException;
   public void unregisterPortletApplication(String paName) throws RegistryException;
+
+  void tryStartPortletApplication(String contextName, String contextPath, FileSystemHelper warStruct, ClassLoader paClassLoader, int paType, long checksum, boolean silent) throws RegistryException;
 }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/alternate/versioned-deployment/deployment.xml Wed Apr 29 05:59:46 2009
@@ -73,7 +73,7 @@
         </property>
         <property name="transactionAttributes">
             <props>
-                <prop key="start*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
+                <prop key="try*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="stop*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="unregister*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="register*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
@@ -82,6 +82,22 @@
         </property>
     </bean>
 
+  <!-- Inject PAM Proxy into PAM implementation -->
+  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+    <meta key="j2:cat" value="default" />
+    <property name="targetObject">
+      <ref bean="org.apache.jetspeed.tools.pamanager.PortletApplicationManager" />
+    </property>
+    <property name="targetMethod">
+      <value>setPAMProxy</value>
+    </property>
+    <property name="arguments">
+      <list>
+        <ref bean="PAM" />
+      </list>
+    </property>
+  </bean>
+
   <!-- Portlet Application and Decorator deployment event listeners -->
   <bean id="portletAppDeploymentListener" class="org.apache.jetspeed.deployment.impl.DeployPortletAppEventListener">
     <constructor-arg index="0">
@@ -133,4 +149,4 @@
     </constructor-arg>
   </bean>
 
-</beans>
\ No newline at end of file
+</beans>

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/deployment.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/deployment.xml?rev=769670&r1=769669&r2=769670&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/deployment.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/deployment.xml Wed Apr 29 05:59:46 2009
@@ -110,7 +110,7 @@
         </property>
         <property name="transactionAttributes">
             <props>
-                <prop key="start*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
+                <prop key="try*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="stop*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="unregister*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
                 <prop key="register*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
@@ -119,6 +119,22 @@
         </property>
     </bean>
 
+  <!-- Inject PAM Proxy into PAM implementation -->
+  <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+    <meta key="j2:cat" value="default" />
+    <property name="targetObject">
+      <ref bean="org.apache.jetspeed.tools.pamanager.PortletApplicationManager" />
+    </property>
+    <property name="targetMethod">
+      <value>setPAMProxy</value>
+    </property>
+    <property name="arguments">
+      <list>
+        <ref bean="PAM" />
+      </list>
+    </property>
+  </bean>
+
   <!-- Portlet Application and Decorator deployment event listeners -->
   <bean id="portletAppDeploymentListener" class="org.apache.jetspeed.deployment.impl.DeployPortletAppEventListener">
     <meta key="j2:cat" value="default" />
@@ -174,4 +190,4 @@
     </constructor-arg>
   </bean>
 
-</beans>
\ No newline at end of file
+</beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org