3 Replies Latest reply on Jul 10, 2006 9:09 PM by Eric Chow

    java.lang.ClassNotFoundException:  org.jboss.portal.portlet.

    Eric Chow Apprentice

      I upgrade the JBoss Portal from 2.2 to 2.4 CR1, but it got the following exception. And my application cannot work any more. It worked fine in 2.2. I tried to search in the jbossportal.sar, no library contains the following missed class. Please help to solve.

      22:38:05,890 ERROR [PortletAppDeployment] Was not able to create service proxy
      java.lang.ClassNotFoundException: org.jboss.portal.portlet.container.WebAppRegistry
       at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
      der.java:1352)
       at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
      der.java:1198)
       at org.jboss.portal.core.deployment.jboss.PortletAppDeployment.injectSer
      vices(PortletAppDeployment.java:108)
       at org.jboss.portal.core.deployment.jboss.PortletAppDeployment.start(Por
      tletAppDeployment.java:71)
       at org.jboss.portal.server.deployment.jboss.PortalDeploymentInfo$Deploym
      entContext.start(PortalDeploymentInfo.java:211)
       at org.jboss.portal.server.deployment.jboss.ServerDeployer.start(ServerD
      eployer.java:242)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
       at sun.reflect.GeneratedMethodAccessor204.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy124.deploy(Unknown Source)
       at org.jboss.portal.server.deployment.jboss.ServerDeployer.deploy(Server
      Deployer.java:296)
       at sun.reflect.GeneratedMethodAccessor289.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy91.deploy(Unknown Source)
       at org.jboss.portal.server.deployment.WebAppAdapter.deploy(WebAppAdapter
      .java:54)
       at org.jboss.portal.server.deployment.WebAppIntercepter.handleNotificati
      on(WebAppIntercepter.java:145)
       at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.notification.NotificationListenerProxy.invoke(Notificati
      onListenerProxy.java:153)
       at $Proxy125.handleNotification(Unknown Source)
       at org.jboss.mx.util.JBossNotificationBroadcasterSupport.handleNotificat
      ion(JBossNotificationBroadcasterSupport.java:127)
       at org.jboss.mx.util.JBossNotificationBroadcasterSupport.sendNotificatio
      n(JBossNotificationBroadcasterSupport.java:108)
       at org.jboss.deployment.SubDeployerSupport.emitNotification(SubDeployerS
      upport.java:340)
       at org.jboss.deployment.SubDeployerSupport.start(SubDeployerSupport.java
      :308)
       at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:48
      2)
       at sun.reflect.GeneratedMethodAccessor251.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor
      .java:97)
       at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(Intercepto
      rServiceMBeanSupport.java:238)
       at org.jboss.ws.integration.jboss.DeployerInterceptor.start(DeployerInte
      rceptor.java:92)
       at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.
      start(SubDeployerInterceptorSupport.java:188)
       at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterce
      ptor.java:95)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy100.start(Unknown Source)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:997)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
       at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy8.deploy(Unknown Source)
       at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
      tScanner.java:421)
       at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
      canner.java:610)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      doScan(AbstractDeploymentScanner.java:263)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      loop(AbstractDeploymentScanner.java:274)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      run(AbstractDeploymentScanner.java:225)
      22:38:06,250 ERROR [PortletAppDeployment] Error when creating instances
      org.jboss.portal.common.util.NoSuchElementException: Missing child portlet-ref o
      f element instance
       at org.jboss.portal.common.util.XML.getUniqueChild(XML.java:325)
       at org.jboss.portal.core.deployment.jboss.PortletAppDeployment.buildInst
      ances(PortletAppDeployment.java:265)
       at org.jboss.portal.core.deployment.jboss.PortletAppDeployment.start(Por
      tletAppDeployment.java:77)
       at org.jboss.portal.server.deployment.jboss.PortalDeploymentInfo$Deploym
      entContext.start(PortalDeploymentInfo.java:211)
       at org.jboss.portal.server.deployment.jboss.ServerDeployer.start(ServerD
      eployer.java:242)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
       at sun.reflect.GeneratedMethodAccessor204.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy124.deploy(Unknown Source)
       at org.jboss.portal.server.deployment.jboss.ServerDeployer.deploy(Server
      Deployer.java:296)
       at sun.reflect.GeneratedMethodAccessor289.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy91.deploy(Unknown Source)
       at org.jboss.portal.server.deployment.WebAppAdapter.deploy(WebAppAdapter
      .java:54)
       at org.jboss.portal.server.deployment.WebAppIntercepter.handleNotificati
      on(WebAppIntercepter.java:145)
       at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.notification.NotificationListenerProxy.invoke(Notificati
      onListenerProxy.java:153)
       at $Proxy125.handleNotification(Unknown Source)
       at org.jboss.mx.util.JBossNotificationBroadcasterSupport.handleNotificat
      ion(JBossNotificationBroadcasterSupport.java:127)
       at org.jboss.mx.util.JBossNotificationBroadcasterSupport.sendNotificatio
      n(JBossNotificationBroadcasterSupport.java:108)
       at org.jboss.deployment.SubDeployerSupport.emitNotification(SubDeployerS
      upport.java:340)
       at org.jboss.deployment.SubDeployerSupport.start(SubDeployerSupport.java
      :308)
       at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:48
      2)
       at sun.reflect.GeneratedMethodAccessor251.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor
      .java:97)
       at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(Intercepto
      rServiceMBeanSupport.java:238)
       at org.jboss.ws.integration.jboss.DeployerInterceptor.start(DeployerInte
      rceptor.java:92)
       at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.
      start(SubDeployerInterceptorSupport.java:188)
       at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterce
      ptor.java:95)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy100.start(Unknown Source)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1007)
       at org.jboss.deployment.MainDeployer.start(MainDeployer.java:997)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:808)
       at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
       at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
      er.java:155)
       at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
       at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
      or.java:133)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
      BeanOperationInterceptor.java:142)
       at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
       at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
      java:264)
       at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
       at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
       at $Proxy8.deploy(Unknown Source)
       at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
      tScanner.java:421)
       at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
      canner.java:610)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      doScan(AbstractDeploymentScanner.java:263)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      loop(AbstractDeploymentScanner.java:274)
       at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
      run(AbstractDeploymentScanner.java:225)
      


        • 1. Re: java.lang.ClassNotFoundException:  org.jboss.portal.port
          Rali Genova Novice

          do you know what class is refering to WebAppRegistry?

          • 2. Re: java.lang.ClassNotFoundException:  org.jboss.portal.port
            Chris Laprun Master

            WebAppRegistry has been renamed to PortletApplicationRegistry in 2.4. Are you using WebAppRegistry directly in your code? Also, did you update your deployment descriptors?

            • 3. Re: java.lang.ClassNotFoundException:  org.jboss.portal.port
              Eric Chow Apprentice

              In my portlets, I never used WebAppRegistry and also changed all the descriptors.


              portlet-instances.xml

              <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
              
              <deployments>
              
               <deployment>
               <instance>
               <instance-id>HelloWorldPortletInstance</instance-id>
               <component-ref>HelloWorldPortlet</component-ref>
               </instance>
               </deployment>
              
               <deployment>
               <instance>
               <instance-id>MyPortletInstance</instance-id>
               <component-ref>MyPortlet</component-ref>
               </instance>
               </deployment>
              
               <deployment>
               <instance>
               <instance-id>ProductCategoryPortletInstance</instance-id>
               <component-ref>ProductCategoryPortlet</component-ref>
               </instance>
               </deployment>
              
              
               <deployment>
               <instance>
               <instance-id>RegionPortletInstance</instance-id>
               <component-ref>RegionPortlet</component-ref>
               </instance>
               </deployment>
              
              
               <deployment>
               <instance>
               <instance-id>CityPortletInstance</instance-id>
               <component-ref>CityPortlet</component-ref>
               </instance>
               </deployment>
              
               <deployment>
               <instance>
               <instance-id>ProductPortletInstance</instance-id>
               <component-ref>ProductPortlet</component-ref>
               </instance>
               </deployment>
              
              </deployments>
              
              
              



              reales-object.xml
              
              <?xml version="1.0" encoding="UTF-8"?>
              <deployments>
               <deployment>
               <parent-ref />
               <if-exists>overwrite</if-exists>
              
               <portal>
               <portal-name>reales</portal-name>
              
               <properties>
               <!-- Set the layout for the default portal -->
               <!-- see also portal-layouts.xml -->
               <property>
               <name>layout.id</name>
               <!--
               <value>generic</value>
               -->
               <value>realeslayout-classic</value>
               </property>
               <!-- Set the theme for the default portal -->
               <!-- see also portal-themes.xml -->
               <property>
               <name>theme.id</name>
               <value>realestheme-classic</value>
               <!--
               <value>Nphalanx</value>
               -->
               </property>
               <!-- set the default render set name (used by the render tag in layouts) -->
               <!-- see also portal-renderSet.xml -->
               <property>
               <name>theme.renderSetId</name>
               <value>divRenderer</value>
               </property>
               <!-- set the default strategy name (used by the strategy interceptor) -->
               <!-- see also portal-strategies.xml -->
               <property>
               <name>layout.strategyId</name>
               <value>maximizedRegion</value>
               </property>
               </properties>
               <supported-modes>
               <mode>view</mode>
               <mode>edit</mode>
               <mode>help</mode>
               </supported-modes>
               <supported-window-states>
               <window-state>normal</window-state>
               <window-state>minimized</window-state>
               <window-state>maximized</window-state>
               </supported-window-states>
              
               <page>
               <page-name>default</page-name>
               <properties>
               <property>
               <name>theme.id</name>
               <value>realestheme-classic</value>
               </property>
               <property>
               <name>order</name>
               <value>1</value>
               </property>
               <property>
               <name>resourceKey</name>
               <value>page.home</value>
               </property>
               </properties>
              
              
               <window>
               <!-- NAVIGATION BAR -->
               <window-name>navPortletWindow</window-name>
               <instance-ref>
               NavigationPortletInstance
               </instance-ref>
               <region>navigation</region>
               <height>0</height>
               <properties>
               <!-- use the window renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.windowRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the decoration renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.decorationRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the portlet renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.portletRendererId</name>
               <value>emptyRenderer</value>
               </property>
               </properties>
               </window>
              
               <!-- LEFT PANEL -->
               <window>
               <window-name>catPortletWindow</window-name>
               <instance-ref>CatalogPortletInstance</instance-ref>
               <region>left</region>
               <height>0</height>
               </window>
              
              
               <window>
               <window-name>ProductPortletWindow</window-name>
               <instance-ref>ProductPortletInstance</instance-ref>
               <region>center</region>
               <height>0</height>
               </window>
              
              
               <page>
               <page-name>House</page-name>
               <window>
               <!-- NAVIGATION BAR -->
               <window-name>navPortletWindow</window-name>
               <instance-ref>
               NavigationPortletInstance
               </instance-ref>
               <region>navigation</region>
               <height>0</height>
               <properties>
               <!-- use the window renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.windowRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the decoration renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.decorationRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the portlet renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.portletRendererId</name>
               <value>emptyRenderer</value>
               </property>
               </properties>
               </window>
              
               <!-- LEFT PANEL -->
               <window>
               <window-name>catPortletWindow</window-name>
               <instance-ref>
               CatalogPortletInstance
               </instance-ref>
               <region>left</region>
               <height>0</height>
               </window>
              
              
               <!-- CENTER PANEL -->
               <window>
               <window-name>ProductPortletWindow</window-name>
               <instance-ref>
               ProductPortletInstance
               </instance-ref>
               <region>center</region>
               <height>0</height>
               </window>
              
              
               <security-constraint>
               <policy-permission>
               <unchecked />
               <action-name>viewrecursive</action-name>
               </policy-permission>
               </security-constraint>
               </page>
              
               <page>
               <page-name>City</page-name>
              
               <window>
               <!-- NAVIGATION BAR -->
               <window-name>navPortletWindow</window-name>
               <instance-ref>
               NavigationPortletInstance
               </instance-ref>
               <region>navigation</region>
               <height>0</height>
               <properties>
               <!-- use the window renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.windowRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the decoration renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.decorationRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the portlet renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.portletRendererId</name>
               <value>emptyRenderer</value>
               </property>
               </properties>
               </window>
              
               <!-- LEFT PANEL -->
               <window>
               <window-name>catPortletWindow</window-name>
               <instance-ref>
               CatalogPortletInstance
               </instance-ref>
               <region>left</region>
               <height>0</height>
               </window>
              
               <window>
               <window-name>CityPortletWindow</window-name>
               <instance-ref>CityPortletInstance</instance-ref>
               <region>center</region>
               <height>1</height>
               </window>
              
               <security-constraint>
               <policy-permission>
               <unchecked />
               <action-name>viewrecursive</action-name>
               </policy-permission>
               </security-constraint>
               </page>
              
              
               <page>
               <page-name>Category</page-name>
              
               <window>
               <!-- NAVIGATION BAR -->
               <window-name>navPortletWindow</window-name>
               <instance-ref>
               NavigationPortletInstance
               </instance-ref>
               <region>navigation</region>
               <height>0</height>
               <properties>
               <!-- use the window renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.windowRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the decoration renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.decorationRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the portlet renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.portletRendererId</name>
               <value>emptyRenderer</value>
               </property>
               </properties>
               </window>
              
               <!-- LEFT PANEL -->
               <window>
               <window-name>catPortletWindow</window-name>
               <instance-ref>
               CatalogPortletInstance
               </instance-ref>
               <region>left</region>
               <height>0</height>
               </window>
              
               <window>
               <window-name>
               ProductCategoryPortletWindow
               </window-name>
               <instance-ref>
               ProductCategoryPortletInstance
               </instance-ref>
               <region>center</region>
               <height>2</height>
               </window>
              
               <security-constraint>
               <policy-permission>
               <unchecked />
               <action-name>viewrecursive</action-name>
               </policy-permission>
               </security-constraint>
               </page>
              
               <page>
               <page-name>Region</page-name>
              
               <window>
               <!-- NAVIGATION BAR -->
               <window-name>navPortletWindow</window-name>
               <instance-ref>
               NavigationPortletInstance
               </instance-ref>
               <region>navigation</region>
               <height>0</height>
               <properties>
               <!-- use the window renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.windowRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the decoration renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.decorationRendererId</name>
               <value>emptyRenderer</value>
               </property>
               <!-- use the portlet renderer from the emptyRenderer renderSet -->
               <property>
               <name>theme.portletRendererId</name>
               <value>emptyRenderer</value>
               </property>
               </properties>
               </window>
              
               <!-- LEFT PANEL -->
               <window>
               <window-name>catPortletWindow</window-name>
               <instance-ref>
               CatalogPortletInstance
               </instance-ref>
               <region>left</region>
               <height>0</height>
               </window>
              
               <window>
               <window-name>RegionPortletWindow</window-name>
               <instance-ref>
               RegionPortletInstance
               </instance-ref>
               <region>center</region>
               <height>3</height>
               </window>
              
               <security-constraint>
               <policy-permission>
               <unchecked />
               <action-name>viewrecursive</action-name>
               </policy-permission>
               </security-constraint>
               </page>
              
              
               <security-constraint>
               <policy-permission>
               <unchecked />
               <action-name>viewrecursive</action-name>
               </policy-permission>
               </security-constraint>
               </page>
               </portal>
               </deployment>
              </deployments>