You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bridges-dev@portals.apache.org by Carsten Ziegeler <cz...@apache.org> on 2005/08/29 16:39:49 UTC

How to integrate bridges?

Hi,

I'm interested in integrating bridges into the Cocoon portal. Now, the
question is, what do I have to do on the portal part? I implemented the
ServletContextProvider interface, but I guess that there is more to do.

The second question is, are there any samples to test the bridge?

Thanks
Carsten

-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/


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


Re: How to integrate bridges?

Posted by Carsten Ziegeler <cz...@apache.org>.
Ate Douma wrote:
> Carsten Ziegeler said:
> 
>>Hi,
>>
>>I\'m interested in integrating bridges into the Cocoon portal. Now, the
>>question is, what do I have to do on the portal part? I implemented the
>>ServletContextProvider interface, but I guess that there is more to do.
> 
> No :-)
> 
> This should be enough at the portal site.
Wow, that's easy then. Great :)

> 
> 
>>The second question is, are there any samples to test the bridge?
> 
> Sample apps using the bridges are still part of Jetspeed-2.
> We already having some discussions about moving pure bridges bases
> examples to the bridges project itself though.
> You can build/adapt the examples yourself if you download the jetspeed-2
> sources, or you can download the prebuild wars like from
>   http://www.bluesunrise.com/maven/jetspeed2/wars/.
> A good testcase example probably is the jpetstore (Struts bridge).
> 
> Note: you will have to modify the portlet.xml and specify your
> implementation class for the ServletContextProvider (and provide it from
> somewhere of course).
> 
Ah, thanks, I'll try that example and see what happens :)

Thanks Ate

Carsten
-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

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


Re: How to integrate bridges?

Posted by Odo <ay...@aa.wakwak.com>.
Thanks, Ate.

I have done several times reinstallation of tomcat and update of J2
during these weeks.
So I suppose that this is caused by something on Linux as you say.

I will use jetspeed inhibiting the cookie from my server by the
configuration of Firefox.

Regards,
Odo

From: Ate Douma <at...@douma.nu>
Subject: Re: How to integrate bridges?
Date: Tue, 13 Sep 2005 13:08:00 +0200

> Odo,
> 
> I followed your steps by the book (even updated my Firefox to 1.0.6) and still cannot
> reproduce your problem.
> Your server.xml matches mine, so there is no problem there either.
> I don't run on Linux though (WindowsXP) so I cannot exclude that to be the cause of it...
> The only suggest I can give you is to reinstall both Tomcat and deploy a fresh checkout of J2.
> 
> Regards, Ate

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Odo,

I followed your steps by the book (even updated my Firefox to 1.0.6) and still cannot
reproduce your problem.
Your server.xml matches mine, so there is no problem there either.
I don't run on Linux though (WindowsXP) so I cannot exclude that to be the cause of it...
The only suggest I can give you is to reinstall both Tomcat and deploy a fresh checkout of J2.

Regards, Ate

Odo wrote:
>>Odo wrote:
>>
>>>I have found the cause.
>>>
>>>In following case, it always causes exception as I wrote in former mail.
>>>
>>>1. Startup jetspeed.
>>>2. Browse jetspeed and jpetstore from a browser.
>>>3. Shutdown jetspeed.
>>>4. Startup jetspeed.
>>>5. When I click the tab of jpetstore, it causes exception.
>>>
>>>But if I restart browser between above 3 and 4 or remove cookie "JSESSIONID",
>>>there is no exception.
>>>
>>>That cookie "JSESSIONID" remaining in browser has something to do with
>>>the exception.
>>>
>>>Can anyone give me a hint to fix this issue?
>>
>>Sorry, but I can't reproduce this.
>>
>>Can you describe your configuration (OS and JDK, Browser) and
>>the *exact* sequence of clicks/entries from start to finish in the browser
>>including how you login again in J2: refresh window (forces login), clicking the
>>Welcome tab, or simply enter the startup url again.
>>Also, the contents of your Tomcat (5.5.9, right?) server.xml config might be useful.
>>
>>Ate
> 
> 
> Sorry for the short information.
> 
> OS	Fedora Core 4
> JDK	jdk1.5.0_04
> Browser	Firefox on Windows 1.0.6 Japanese version / IE version 6
> Maven	1.0.2
> Tomcat	5.5.9
> J2	M4 (11 Sept.)
> 
> Output of "uname -a":
> Linux xxx.xxx.xxx.jp 2.6.12-1.1398_FC4smp #1 SMP Fri Jul 15 01:30:13 EDT 2005 i686 i686 i386 GNU/Linux
> 
> 1. Startup tomcat.
> 2. After one minutes, start Firefox.
> 3. On Firefox, browse http://xxx.xxx.xxx.xxx:8080/jetspeed/portal
> 4. Login as "admin". Change password from "admin" to "admin2".
> 5. Click tab of jpetstore.
> 6. Click "enter" and click big green bird in center.
> 7. Remove the tab of jpetstore by clicking red "x" button on right side.
> 8. Shutdown tomcat.
> 9. Startup tomcat.
> 10. After one minutes, browse http://xxx.xxx.xxx.xxx:8080/jetspeed/portal
>     on Firefox on a new tab.
> 11. Login as "admin". Password is "admin2".
> 12. Click tab of jpetstore.
> 13. Exception.
> 
> "After one minutes" is to avoid following error.
> I don't know why this error occurrs when I browse just after startup.
> 
> Failed to retrieve Portlet Definition for jetspeed-layouts::VelocityTwoColumnsorg.apache.jetspeed.container.window.FailedToRetrievePortletWindow: No PortletEntity exists for for id dp-1 removing window from cache.
> 
> Attached is server.xml of tomcat 5.5.9, but I have not modified it.
> 
> 
> ------------------------------------------------------------------------
> 
> <!-- Example Server Configuration File -->
> <!-- Note that component elements are nested corresponding to their
>      parent-child relationships with each other -->
> 
> <!-- A "Server" is a singleton element that represents the entire JVM,
>      which may contain one or more "Service" instances.  The Server
>      listens for a shutdown command on the indicated port.
> 
>      Note:  A "Server" is not itself a "Container", so you may not
>      define subcomponents such as "Valves" or "Loggers" at this level.
>  -->
> 
> <Server port="8005" shutdown="SHUTDOWN">
> 
>   <!-- Comment these entries out to disable JMX MBeans support used for the 
>        administration web application -->
>   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
>   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
>   <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
> 
>   <!-- Global JNDI resources -->
>   <GlobalNamingResources>
> 
>     <!-- Test entry for demonstration purposes -->
>     <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
> 
>     <!-- Editable user database that can also be used by
>          UserDatabaseRealm to authenticate users -->
>     <Resource name="UserDatabase" auth="Container"
>               type="org.apache.catalina.UserDatabase"
>        description="User database that can be updated and saved"
>            factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
>           pathname="conf/tomcat-users.xml" />
> 
>   </GlobalNamingResources>
> 
>   <!-- A "Service" is a collection of one or more "Connectors" that share
>        a single "Container" (and therefore the web applications visible
>        within that Container).  Normally, that Container is an "Engine",
>        but this is not required.
> 
>        Note:  A "Service" is not itself a "Container", so you may not
>        define subcomponents such as "Valves" or "Loggers" at this level.
>    -->
> 
>   <!-- Define the Tomcat Stand-Alone Service -->
>   <Service name="Catalina">
> 
>     <!-- A "Connector" represents an endpoint by which requests are received
>          and responses are returned.  Each Connector passes requests on to the
>          associated "Container" (normally an Engine) for processing.
> 
>          By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
>          You can also enable an SSL HTTP/1.1 Connector on port 8443 by
>          following the instructions below and uncommenting the second Connector
>          entry.  SSL support requires the following steps (see the SSL Config
>          HOWTO in the Tomcat 5 documentation bundle for more detailed
>          instructions):
>          * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
>            later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
>          * Execute:
>              %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
>              $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
>            with a password value of "changeit" for both the certificate and
>            the keystore itself.
> 
>          By default, DNS lookups are enabled when a web application calls
>          request.getRemoteHost().  This can have an adverse impact on
>          performance, so you can disable it by setting the
>          "enableLookups" attribute to "false".  When DNS lookups are disabled,
>          request.getRemoteHost() will return the String version of the
>          IP address of the remote client.
>     -->
> 
>     <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
>     <Connector port="8080" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" redirectPort="8443" acceptCount="100"
>                connectionTimeout="20000" disableUploadTimeout="true" />
>     <!-- Note : To disable connection timeouts, set connectionTimeout value
>      to 0 -->
> 	
> 	<!-- Note : To use gzip compression you could set the following properties :
> 	
> 			   compression="on" 
> 			   compressionMinSize="2048" 
> 			   noCompressionUserAgents="gozilla, traviata" 
> 			   compressableMimeType="text/html,text/xml"
> 	-->
> 
>     <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
>     <!--
>     <Connector port="8443" maxHttpHeaderSize="8192"
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" disableUploadTimeout="true"
>                acceptCount="100" scheme="https" secure="true"
>                clientAuth="false" sslProtocol="TLS" />
>     -->
> 
>     <!-- Define an AJP 1.3 Connector on port 8009 -->
>     <Connector port="8009" 
>                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
> 
>     <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
>     <!-- See proxy documentation for more information about using this. -->
>     <!--
>     <Connector port="8082" 
>                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
>                enableLookups="false" acceptCount="100" connectionTimeout="20000"
>                proxyPort="80" disableUploadTimeout="true" />
>     -->
> 
>     <!-- An Engine represents the entry point (within Catalina) that processes
>          every request.  The Engine implementation for Tomcat stand alone
>          analyzes the HTTP headers included with the request, and passes them
>          on to the appropriate Host (virtual host). -->
> 
>     <!-- You should set jvmRoute to support load-balancing via AJP ie :
>     <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">         
>     --> 
>          
>     <!-- Define the top level container in our container hierarchy -->
>     <Engine name="Catalina" defaultHost="localhost">
> 
>       <!-- The request dumper valve dumps useful debugging information about
>            the request headers and cookies that were received, and the response
>            headers and cookies that were sent, for all requests received by
>            this instance of Tomcat.  If you care only about requests to a
>            particular virtual host, or a particular application, nest this
>            element inside the corresponding <Host> or <Context> entry instead.
> 
>            For a similar mechanism that is portable to all Servlet 2.4
>            containers, check out the "RequestDumperFilter" Filter in the
>            example application (the source for this filter may be found in
>            "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
> 
>            Request dumping is disabled by default.  Uncomment the following
>            element to enable it. -->
>       <!--
>       <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
>       -->
> 
>       <!-- Because this Realm is here, an instance will be shared globally -->
> 
>       <!-- This Realm uses the UserDatabase configured in the global JNDI
>            resources under the key "UserDatabase".  Any edits
>            that are performed against this UserDatabase are immediately
>            available for use by the Realm.  -->
>       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
>              resourceName="UserDatabase"/>
> 
>       <!-- Comment out the old realm but leave here for now in case we
>            need to go back quickly -->
>       <!--
>       <Realm className="org.apache.catalina.realm.MemoryRealm" />
>       -->
> 
>       <!-- Replace the above Realm with one of the following to get a Realm
>            stored in a database and accessed via JDBC -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="org.gjt.mm.mysql.Driver"
>           connectionURL="jdbc:mysql://localhost/authority"
>          connectionName="test" connectionPassword="test"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="oracle.jdbc.driver.OracleDriver"
>           connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
>          connectionName="scott" connectionPassword="tiger"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!--
>       <Realm  className="org.apache.catalina.realm.JDBCRealm"
>              driverName="sun.jdbc.odbc.JdbcOdbcDriver"
>           connectionURL="jdbc:odbc:CATALINA"
>               userTable="users" userNameCol="user_name" userCredCol="user_pass"
>           userRoleTable="user_roles" roleNameCol="role_name" />
>       -->
> 
>       <!-- Define the default virtual host
>            Note: XML Schema validation will not work with Xerces 2.2.
>        -->
>       <Host name="localhost" appBase="webapps"
>        unpackWARs="true" autoDeploy="true"
>        xmlValidation="false" xmlNamespaceAware="false">
> 
>         <!-- Defines a cluster for this node,
>              By defining this element, means that every manager will be changed.
>              So when running a cluster, only make sure that you have webapps in there
>              that need to be clustered and remove the other ones.
>              A cluster has the following parameters:
> 
>              className = the fully qualified name of the cluster class
> 
>              name = a descriptive name for your cluster, can be anything
> 
>              mcastAddr = the multicast address, has to be the same for all the nodes
> 
>              mcastPort = the multicast port, has to be the same for all the nodes
>              
>              mcastBindAddr = bind the multicast socket to a specific address
>              
>              mcastTTL = the multicast TTL if you want to limit your broadcast
>              
>              mcastSoTimeout = the multicast readtimeout 
> 
>              mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
> 
>              mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
> 
>              tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes 
> 
>              tcpListenAddress = the listen address (bind address) for TCP cluster request on this host, 
>                                 in case of multiple ethernet cards.
>                                 auto means that address becomes
>                                 InetAddress.getLocalHost().getHostAddress()
> 
>              tcpListenPort = the tcp listen port
> 
>              tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
>                                   has a wakup bug in java.nio. Set to 0 for no timeout
> 
>              printToScreen = true means that managers will also print to std.out
> 
>              expireSessionsOnShutdown = true means that 
> 
>              useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
>                             false means to replicate the session after each request.
>                             false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager)
>                             <%
>                             HashMap map = (HashMap)session.getAttribute("map");
>                             map.put("key","value");
>                             %>
>              replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
>                                * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
>                                * Synchronous means that the thread that executes the request, is also the
>                                thread the replicates the data to the other nodes, and will not return until all
>                                nodes have received the information.
>                                * Asynchronous means that there is a specific 'sender' thread for each cluster node,
>                                so the request thread will queue the replication request into a "smart" queue,
>                                and then return to the client.
>                                The "smart" queue is a queue where when a session is added to the queue, and the same session
>                                already exists in the queue from a previous request, that session will be replaced
>                                in the queue instead of replicating two requests. This almost never happens, unless there is a 
>                                large network delay.
>         -->             
>         <!--
>             When configuring for clustering, you also add in a valve to catch all the requests
>             coming in, at the end of the request, the session may or may not be replicated.
>             A session is replicated if and only if all the conditions are met:
>             1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
>             2. a session exists (has been created)
>             3. the request is not trapped by the "filter" attribute
> 
>             The filter attribute is to filter out requests that could not modify the session,
>             hence we don't replicate the session after the end of this request.
>             The filter is negative, ie, anything you put in the filter, you mean to filter out,
>             ie, no replication will be done on requests that match one of the filters.
>             The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
> 
>             filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
>             ending with .gif and .js are intercepted.
>             
>             The deployer element can be used to deploy apps cluster wide.
>             Currently the deployment only deploys/undeploys to working members in the cluster
>             so no WARs are copied upons startup of a broken node.
>             The deployer watches a directory (watchDir) for WAR files when watchEnabled="true"
>             When a new war file is added the war gets deployed to the local instance,
>             and then deployed to the other instances in the cluster.
>             When a war file is deleted from the watchDir the war is undeployed locally 
>             and cluster wide
>         -->
>         
>         <!--
>         <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
>                  managerClassName="org.apache.catalina.cluster.session.DeltaManager"
>                  expireSessionsOnShutdown="false"
>                  useDirtyFlag="true"
>                  notifyListenersOnReplication="true">
> 
>             <Membership 
>                 className="org.apache.catalina.cluster.mcast.McastService"
>                 mcastAddr="228.0.0.4"
>                 mcastPort="45564"
>                 mcastFrequency="500"
>                 mcastDropTime="3000"/>
> 
>             <Receiver 
>                 className="org.apache.catalina.cluster.tcp.ReplicationListener"
>                 tcpListenAddress="auto"
>                 tcpListenPort="4001"
>                 tcpSelectorTimeout="100"
>                 tcpThreadCount="6"/>
> 
>             <Sender
>                 className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
>                 replicationMode="pooled"
>                 ackTimeout="15000"/>
> 
>             <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
>                    filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
>                    
>             <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
>                       tempDir="/tmp/war-temp/"
>                       deployDir="/tmp/war-deploy/"
>                       watchDir="/tmp/war-listen/"
>                       watchEnabled="false"/>
>         </Cluster>
>         -->        
> 
> 
> 
>         <!-- Normally, users must authenticate themselves to each web app
>              individually.  Uncomment the following entry if you would like
>              a user to be authenticated the first time they encounter a
>              resource protected by a security constraint, and then have that
>              user identity maintained across *all* web applications contained
>              in this virtual host. -->
>         <!--
>         <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
>         -->
> 
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.AccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
> 
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>              This access log implementation is optimized for maximum performance,
>              but is hardcoded to support only the "common" and "combined" patterns.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
>         <!-- Access log processes all requests for this virtual host.  By
>              default, log files are created in the "logs" directory relative to
>              $CATALINA_HOME.  If you wish, you can specify a different
>              directory with the "directory" attribute.  Specify either a relative
>              (to $CATALINA_HOME) or absolute path to the desired directory.
>              This access log implementation is optimized for maximum performance,
>              but is hardcoded to support only the "common" and "combined" patterns.
> 
>              This valve use NIO direct Byte Buffer to asynchornously store the
>              log.
>         -->
>         <!--
>         <Valve className="org.apache.catalina.valves.ByteBufferAccessLogValve"
>                  directory="logs"  prefix="localhost_access_log." suffix=".txt"
>                  pattern="common" resolveHosts="false"/>
>         -->
> 
>       </Host>
> 
>     </Engine>
> 
>   </Service>
> 
> </Server>
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: bridges-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: bridges-dev-help@portals.apache.org



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


Re: How to integrate bridges?

Posted by Odo <ay...@aa.wakwak.com>.
> Odo wrote:
> > I have found the cause.
> > 
> > In following case, it always causes exception as I wrote in former mail.
> > 
> > 1. Startup jetspeed.
> > 2. Browse jetspeed and jpetstore from a browser.
> > 3. Shutdown jetspeed.
> > 4. Startup jetspeed.
> > 5. When I click the tab of jpetstore, it causes exception.
> > 
> > But if I restart browser between above 3 and 4 or remove cookie "JSESSIONID",
> > there is no exception.
> > 
> > That cookie "JSESSIONID" remaining in browser has something to do with
> > the exception.
> > 
> > Can anyone give me a hint to fix this issue?
> Sorry, but I can't reproduce this.
> 
> Can you describe your configuration (OS and JDK, Browser) and
> the *exact* sequence of clicks/entries from start to finish in the browser
> including how you login again in J2: refresh window (forces login), clicking the
> Welcome tab, or simply enter the startup url again.
> Also, the contents of your Tomcat (5.5.9, right?) server.xml config might be useful.
> 
> Ate

Sorry for the short information.

OS	Fedora Core 4
JDK	jdk1.5.0_04
Browser	Firefox on Windows 1.0.6 Japanese version / IE version 6
Maven	1.0.2
Tomcat	5.5.9
J2	M4 (11 Sept.)

Output of "uname -a":
Linux xxx.xxx.xxx.jp 2.6.12-1.1398_FC4smp #1 SMP Fri Jul 15 01:30:13 EDT 2005 i686 i686 i386 GNU/Linux

1. Startup tomcat.
2. After one minutes, start Firefox.
3. On Firefox, browse http://xxx.xxx.xxx.xxx:8080/jetspeed/portal
4. Login as "admin". Change password from "admin" to "admin2".
5. Click tab of jpetstore.
6. Click "enter" and click big green bird in center.
7. Remove the tab of jpetstore by clicking red "x" button on right side.
8. Shutdown tomcat.
9. Startup tomcat.
10. After one minutes, browse http://xxx.xxx.xxx.xxx:8080/jetspeed/portal
    on Firefox on a new tab.
11. Login as "admin". Password is "admin2".
12. Click tab of jpetstore.
13. Exception.

"After one minutes" is to avoid following error.
I don't know why this error occurrs when I browse just after startup.

Failed to retrieve Portlet Definition for jetspeed-layouts::VelocityTwoColumnsorg.apache.jetspeed.container.window.FailedToRetrievePortletWindow: No PortletEntity exists for for id dp-1 removing window from cache.

Attached is server.xml of tomcat 5.5.9, but I have not modified it.

Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Odo wrote:
> I have found the cause.
> 
> In following case, it always causes exception as I wrote in former mail.
> 
> 1. Startup jetspeed.
> 2. Browse jetspeed and jpetstore from a browser.
> 3. Shutdown jetspeed.
> 4. Startup jetspeed.
> 5. When I click the tab of jpetstore, it causes exception.
> 
> But if I restart browser between above 3 and 4 or remove cookie "JSESSIONID",
> there is no exception.
> 
> That cookie "JSESSIONID" remaining in browser has something to do with
> the exception.
> 
> Can anyone give me a hint to fix this issue?
Sorry, but I can't reproduce this.

Can you describe your configuration (OS and JDK, Browser) and
the *exact* sequence of clicks/entries from start to finish in the browser
including how you login again in J2: refresh window (forces login), clicking the
Welcome tab, or simply enter the startup url again.
Also, the contents of your Tomcat (5.5.9, right?) server.xml config might be useful.

Ate
> 
> 
> From: Odo <ay...@aa.wakwak.com>
> Subject: Re: How to integrate bridges?
> Date: Wed, 07 Sep 2005 00:09:50 +0900 (JST)
> 
> 
>>Thanks for your reply, Ate.
>>
>>
>>>In your case, you must have modied more than you wanted in the
>>>SearchProducts.jsp (and possibly elsewhere).
>>>Just changing the table title would have no side-effect.
>>>I suggest you compare all your code with subversion and carefully check
>>>all the differences.
>>
>>Yes. I always use "svn status" or "svn diff" and I am conscious of
>>changing of files.
>>I have tried following several times, removing all files everytime.
>>
>>1. Checkout all M4 source by svn.
>>
>>2. Change these three files to use PostgreSQL.
>>
>>   build.properties
>>   project.properties
>>   maven-plugin/plugin.properties
>>
>>3. Build and start tomcat.
>>
>>   maven initMavenPlugin allClean allBuild
>>   maven j2:quickStart
>>   /.../jakarta-tomcat-5.5.9/bin/startup.sh
>>
>>4. Jetspeed/Jpetstore works fine. No problem.
>>
>>5. Stop tomcat.
>>
>>   /.../jakarta-tomcat-5.5.9/bin/shutdown.sh
>>
>>6. Change SearchProducts.jsp. Only title string.
>>
>>7. Build and start tomcat. Same as 3.
>>
>>8. Able to login to Jetspeed by uid "admin".
>>
>>9. Exception when I click Jpetstore tab.
>>
>>Is there any mistake in above procedure?
>>If not, it is a mystery. :-)
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: bridges-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: bridges-dev-help@portals.apache.org
> 
> 
> 
> 
> 



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


Re: How to integrate bridges?

Posted by Odo <ay...@aa.wakwak.com>.
I have found the cause.

In following case, it always causes exception as I wrote in former mail.

1. Startup jetspeed.
2. Browse jetspeed and jpetstore from a browser.
3. Shutdown jetspeed.
4. Startup jetspeed.
5. When I click the tab of jpetstore, it causes exception.

But if I restart browser between above 3 and 4 or remove cookie "JSESSIONID",
there is no exception.

That cookie "JSESSIONID" remaining in browser has something to do with
the exception.

Can anyone give me a hint to fix this issue?


From: Odo <ay...@aa.wakwak.com>
Subject: Re: How to integrate bridges?
Date: Wed, 07 Sep 2005 00:09:50 +0900 (JST)

> Thanks for your reply, Ate.
> 
> > In your case, you must have modied more than you wanted in the
> > SearchProducts.jsp (and possibly elsewhere).
> > Just changing the table title would have no side-effect.
> > I suggest you compare all your code with subversion and carefully check
> > all the differences.
> 
> Yes. I always use "svn status" or "svn diff" and I am conscious of
> changing of files.
> I have tried following several times, removing all files everytime.
> 
> 1. Checkout all M4 source by svn.
> 
> 2. Change these three files to use PostgreSQL.
> 
>    build.properties
>    project.properties
>    maven-plugin/plugin.properties
> 
> 3. Build and start tomcat.
> 
>    maven initMavenPlugin allClean allBuild
>    maven j2:quickStart
>    /.../jakarta-tomcat-5.5.9/bin/startup.sh
> 
> 4. Jetspeed/Jpetstore works fine. No problem.
> 
> 5. Stop tomcat.
> 
>    /.../jakarta-tomcat-5.5.9/bin/shutdown.sh
> 
> 6. Change SearchProducts.jsp. Only title string.
> 
> 7. Build and start tomcat. Same as 3.
> 
> 8. Able to login to Jetspeed by uid "admin".
> 
> 9. Exception when I click Jpetstore tab.
> 
> Is there any mistake in above procedure?
> If not, it is a mystery. :-)

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


Re: How to integrate bridges?

Posted by Odo <ay...@aa.wakwak.com>.
Thanks for your reply, Ate.

> In your case, you must have modied more than you wanted in the
> SearchProducts.jsp (and possibly elsewhere).
> Just changing the table title would have no side-effect.
> I suggest you compare all your code with subversion and carefully check
> all the differences.

Yes. I always use "svn status" or "svn diff" and I am conscious of
changing of files.
I have tried following several times, removing all files everytime.

1. Checkout all M4 source by svn.

2. Change these three files to use PostgreSQL.

   build.properties
   project.properties
   maven-plugin/plugin.properties

3. Build and start tomcat.

   maven initMavenPlugin allClean allBuild
   maven j2:quickStart
   /.../jakarta-tomcat-5.5.9/bin/startup.sh

4. Jetspeed/Jpetstore works fine. No problem.

5. Stop tomcat.

   /.../jakarta-tomcat-5.5.9/bin/shutdown.sh

6. Change SearchProducts.jsp. Only title string.

7. Build and start tomcat. Same as 3.

8. Able to login to Jetspeed by uid "admin".

9. Exception when I click Jpetstore tab.

Is there any mistake in above procedure?
If not, it is a mystery. :-)

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Odo said:
> Ate,
>
> I encountered just the same exception(stacktrace below) when I changed
> one of jsp(applications/jpetstore/src/webapp/catalog/SearchProducts.jsp),
> did build by maven, started up tomcat and clicked jpetstore tab.
>
> The change to jsp is quite simple, something like changing table title
> from \"Product ID\" to \"Product ID2\".
>
> Could you let me know why this exception occurrs?
> Is it by the same reason as the case of Carsten?
> But this case is very very simple, just modify/build/exec of J2-M4 source.
Well, it looks like the same error, andwith the same cause of
a property not set in the catalogBean.
But, this most certainly won\'t have the same origin.
The problem Carsten had was because of a missing feature in the Concoon
JSR-168 container.
In your case, you must have modied more than you wanted in the
SearchProducts.jsp (and possibly elsewhere).
Just changing the table title would have no side-effect.
I suggest you compare all your code with subversion and carefully check
all the differences.

>
> Odo
> ays@aa.wakwak.com
>
> ----------------------------------------------------------------------
> Error	Define tag cannot set a null value
> Error Type	javax.servlet.jsp.JspException
> Stacktrace	org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:238)
> org.apache.jsp.catalog.Item_jsp._jspService(org.apache.jsp.catalog.Item_jsp:306)
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> org.apache.portals.bridges.struts.PortletServletRequestDispatcher.invoke(PortletServletRequestDispatcher.java:128)
> org.apache.portals.bridges.struts.PortletServletRequestDispatcher.include(PortletServletRequestDispatcher.java:146)
> org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1087)
> org.apache.struts.action.RequestProcessor.internalModuleRelativeInclude(RequestProcessor.java:1025)
> org.apache.struts.action.RequestProcessor.processInclude(RequestProcessor.java:579)
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:215)
> org.apache.portals.bridges.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:50)
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> org.apache.portals.bridges.struts.StrutsPortlet.processRequest(StrutsPortlet.java:335)
> org.apache.portals.bridges.struts.StrutsPortlet.doView(StrutsPortlet.java:263)
> javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247)
> javax.portlet.GenericPortlet.render(GenericPortlet.java:175)
> org.apache.jetspeed.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:96)
> org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:224)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:212)
> org.apache.jetspeed.container.invoker.ServletPortletInvoker.render(ServletPortletInvoker.java:125)
> sun.reflect.GeneratedMethodAccessor220.invoke(Unknown Source)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> java.lang.reflect.Method.invoke(Method.java:585)
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:284)
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:163)
> $Proxy10.render(Unknown Source)
> org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119)
> org.apache.jetspeed.container.JetspeedPortletContainerWrapper.renderPortlet(JetspeedPortletContainerWrapper.java:116)
> org.apache.jetspeed.aggregator.impl.RenderingJob.execute(RenderingJob.java:108)
> org.apache.jetspeed.aggregator.impl.PortletRendererImpl.renderNow(PortletRendererImpl.java:102)
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:264)
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:247)
> org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build(PageAggregatorImpl.java:156)
> org.apache.jetspeed.aggregator.AggregatorValve.invoke(AggregatorValve.java:48)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:117)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:76)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:179)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.security.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:109)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.security.impl.PasswordCredentialValveImpl.invoke(PasswordCredentialValveImpl.java:131)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.localization.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:168)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.security.impl.AbstractSecurityValve$1.run(AbstractSecurityValve.java:117)
> java.security.AccessController.doPrivileged(Native Method)
> javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
> org.apache.jetspeed.security.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:111)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.container.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:55)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.capabilities.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:127)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
> org.apache.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:185)
> org.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:208)
> org.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:215)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
> java.lang.Thread.run(Thread.java:595)
> ----------------------------------------------------------------------
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: bridges-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: bridges-dev-help@portals.apache.org
>
>


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


Re: How to integrate bridges?

Posted by Odo <ay...@aa.wakwak.com>.
Ate,

I encountered just the same exception(stacktrace below) when I changed
one of jsp(applications/jpetstore/src/webapp/catalog/SearchProducts.jsp),
did build by maven, started up tomcat and clicked jpetstore tab.

The change to jsp is quite simple, something like changing table title
from "Product ID" to "Product ID2".

Could you let me know why this exception occurrs?
Is it by the same reason as the case of Carsten?
But this case is very very simple, just modify/build/exec of J2-M4 source.

Odo
ays@aa.wakwak.com

----------------------------------------------------------------------
Error	Define tag cannot set a null value
Error Type	javax.servlet.jsp.JspException
Stacktrace	org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:238)
org.apache.jsp.catalog.Item_jsp._jspService(org.apache.jsp.catalog.Item_jsp:306)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
org.apache.portals.bridges.struts.PortletServletRequestDispatcher.invoke(PortletServletRequestDispatcher.java:128)
org.apache.portals.bridges.struts.PortletServletRequestDispatcher.include(PortletServletRequestDispatcher.java:146)
org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1087)
org.apache.struts.action.RequestProcessor.internalModuleRelativeInclude(RequestProcessor.java:1025)
org.apache.struts.action.RequestProcessor.processInclude(RequestProcessor.java:579)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:215)
org.apache.portals.bridges.struts.PortletRequestProcessor.process(PortletRequestProcessor.java:50)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
org.apache.portals.bridges.struts.StrutsPortlet.processRequest(StrutsPortlet.java:335)
org.apache.portals.bridges.struts.StrutsPortlet.doView(StrutsPortlet.java:263)
javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247)
javax.portlet.GenericPortlet.render(GenericPortlet.java:175)
org.apache.jetspeed.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:96)
org.apache.jetspeed.container.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:224)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
org.apache.jetspeed.container.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:212)
org.apache.jetspeed.container.invoker.ServletPortletInvoker.render(ServletPortletInvoker.java:125)
sun.reflect.GeneratedMethodAccessor220.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:284)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:163)
$Proxy10.render(Unknown Source)
org.apache.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:119)
org.apache.jetspeed.container.JetspeedPortletContainerWrapper.renderPortlet(JetspeedPortletContainerWrapper.java:116)
org.apache.jetspeed.aggregator.impl.RenderingJob.execute(RenderingJob.java:108)
org.apache.jetspeed.aggregator.impl.PortletRendererImpl.renderNow(PortletRendererImpl.java:102)
org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:264)
org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:247)
org.apache.jetspeed.aggregator.impl.PageAggregatorImpl.build(PageAggregatorImpl.java:156)
org.apache.jetspeed.aggregator.AggregatorValve.invoke(AggregatorValve.java:48)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:117)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:76)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:179)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.security.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:109)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.security.impl.PasswordCredentialValveImpl.invoke(PasswordCredentialValveImpl.java:131)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.localization.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:168)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.security.impl.AbstractSecurityValve$1.run(AbstractSecurityValve.java:117)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
org.apache.jetspeed.security.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:111)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.container.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:55)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.capabilities.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:127)
org.apache.jetspeed.pipeline.JetspeedPipeline.invokeNext(JetspeedPipeline.java:203)
org.apache.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:185)
org.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:208)
org.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:215)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:407)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Thread.java:595)
----------------------------------------------------------------------

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Carsten Ziegeler wrote:
> Ate Douma wrote:
> 
>>Yes, I think I now see where it is going wrong after looking again at the debug log
>>you appended before.
>>The Struts Bridge uses render parameter _spage to communicate Struts request parameters
>>to Struts. If you look in the debug log, you see this as having value:
>>   _spage=/shop/viewCategory.shtml?categoryId=CATS
>>The StrutsPortlet invokes the StrutsServet using a RequestDispatcher using the _spage path
>>from the ServletContext  as retrieved from ServletContextProvider (the one you will have
>>implemented yourself for Cocoon).
>>The thing what is going wrong is Servlet 2.3 SRV.8.1.1 spec related.
>>According to that requirement, query strings in request dispatcher paths must be made
>>available to the requested servlet *and* take precedence during the invocation.
>>In the above example, the query parameter categoryId=CATS therefore should be visible
>>to the StrutsServlet.
>>But, your debug log show only the _spage, _sorig (another StrutsPortlet parameter) and a
>>cocoon-portal-event parameter be seen (and tried to be set) by BeanUtils.populate.
>>So, I suggest checking your ServletContextProvider implementation and debugging the
>>HttpServletRequest(Wrapper) hierarchy as seen by StrutsServlet after it is invoked from
>>StrutsPortlet (line: 357).
>>
>>In Jetspeed, we had this problem too when I started out with the Struts Bridge. I suspect you
>>may have a request wrapper in Cocoon which only gives access to the Portlet request parameters
>>and forgets to merge the parameters set with the dispatched include call as provided by Tomcat.
>>If I remember correctly, I had problems with the Tomcat 4.x handling though and had to provide
>>handling for this myself, but with Tomcat >= 5 this was fixed and now the Struts Bridge expects
>>this to be done according to the specs by the underlying webserver.
>>If you would need that old Tomcat 4 handling, please let me know and I can look it up from
>>our now old and readonly cvs repo.
>>
> 
> Ah, now I found the problem - thanks for your help, Ate - Tomcat
> exchanges the request object in the HttpServletRequestWrapper - my own
> wrapper was caching the request object itself, therefore always using an
> own version without the required parameters :(
> Now it works...the Struts based JPetstore runs perfectly inside the
> Cocoon portal...Hurrrayy!
> I'll just adding Cocoon to the list of supporting projects.
> 
> Again, many thanks, Ate! Without you I think I would never have found
> the problem.
No problem. Glad to be able to help out.
And having Cocoon on the supported list is great :-)

Ate

> 
> Regards
> Carsten



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


Re: How to integrate bridges?

Posted by Carsten Ziegeler <cz...@apache.org>.
Ate Douma wrote:
> 
> Yes, I think I now see where it is going wrong after looking again at the debug log
> you appended before.
> The Struts Bridge uses render parameter _spage to communicate Struts request parameters
> to Struts. If you look in the debug log, you see this as having value:
>    _spage=/shop/viewCategory.shtml?categoryId=CATS
> The StrutsPortlet invokes the StrutsServet using a RequestDispatcher using the _spage path
> from the ServletContext  as retrieved from ServletContextProvider (the one you will have
> implemented yourself for Cocoon).
> The thing what is going wrong is Servlet 2.3 SRV.8.1.1 spec related.
> According to that requirement, query strings in request dispatcher paths must be made
> available to the requested servlet *and* take precedence during the invocation.
> In the above example, the query parameter categoryId=CATS therefore should be visible
> to the StrutsServlet.
> But, your debug log show only the _spage, _sorig (another StrutsPortlet parameter) and a
> cocoon-portal-event parameter be seen (and tried to be set) by BeanUtils.populate.
> So, I suggest checking your ServletContextProvider implementation and debugging the
> HttpServletRequest(Wrapper) hierarchy as seen by StrutsServlet after it is invoked from
> StrutsPortlet (line: 357).
> 
> In Jetspeed, we had this problem too when I started out with the Struts Bridge. I suspect you
> may have a request wrapper in Cocoon which only gives access to the Portlet request parameters
> and forgets to merge the parameters set with the dispatched include call as provided by Tomcat.
> If I remember correctly, I had problems with the Tomcat 4.x handling though and had to provide
> handling for this myself, but with Tomcat >= 5 this was fixed and now the Struts Bridge expects
> this to be done according to the specs by the underlying webserver.
> If you would need that old Tomcat 4 handling, please let me know and I can look it up from
> our now old and readonly cvs repo.
> 
Ah, now I found the problem - thanks for your help, Ate - Tomcat
exchanges the request object in the HttpServletRequestWrapper - my own
wrapper was caching the request object itself, therefore always using an
own version without the required parameters :(
Now it works...the Struts based JPetstore runs perfectly inside the
Cocoon portal...Hurrrayy!
I'll just adding Cocoon to the list of supporting projects.

Again, many thanks, Ate! Without you I think I would never have found
the problem.

Regards
Carsten
-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Carsten Ziegeler wrote:
> Ate Douma wrote:
> 
>>The ActionForm CategoryBean used by the Catalog.jsp seems to be filled in during
>>the actionRequest and stored in the session. During the subsequent renderRequest
>>the same CategoryBean *is* retrieved again. So, if the DefineTag is getting a null
>>value (from catalogBean .getCategory() or .getProductList()) I suggest debugging
>>the CategoryBean.viewCategory() method which is invoked by the ActionBean
>>during the actionRequest. That should retrieve and fill in the required values from
>>the database. Then, if that works, debug the getCategory() and getProductList()
>>method when invoked from the defineTag.
>>
> 
> Many thanks for the info - now, debugging revealed that the category is
> never set,
> so the setter of the bean is not invoked. Can you please help me again,
> and tell me
> who triggers the setter?
Yes, I think I now see where it is going wrong after looking again at the debug log
you appended before.
The Struts Bridge uses render parameter _spage to communicate Struts request parameters
to Struts. If you look in the debug log, you see this as having value:
   _spage=/shop/viewCategory.shtml?categoryId=CATS
The StrutsPortlet invokes the StrutsServet using a RequestDispatcher using the _spage path
from the ServletContext  as retrieved from ServletContextProvider (the one you will have
implemented yourself for Cocoon).
The thing what is going wrong is Servlet 2.3 SRV.8.1.1 spec related.
According to that requirement, query strings in request dispatcher paths must be made
available to the requested servlet *and* take precedence during the invocation.
In the above example, the query parameter categoryId=CATS therefore should be visible
to the StrutsServlet.
But, your debug log show only the _spage, _sorig (another StrutsPortlet parameter) and a
cocoon-portal-event parameter be seen (and tried to be set) by BeanUtils.populate.
So, I suggest checking your ServletContextProvider implementation and debugging the
HttpServletRequest(Wrapper) hierarchy as seen by StrutsServlet after it is invoked from
StrutsPortlet (line: 357).

In Jetspeed, we had this problem too when I started out with the Struts Bridge. I suspect you
may have a request wrapper in Cocoon which only gives access to the Portlet request parameters
and forgets to merge the parameters set with the dispatched include call as provided by Tomcat.
If I remember correctly, I had problems with the Tomcat 4.x handling though and had to provide
handling for this myself, but with Tomcat >= 5 this was fixed and now the Struts Bridge expects
this to be done according to the specs by the underlying webserver.
If you would need that old Tomcat 4 handling, please let me know and I can look it up from
our now old and readonly cvs repo.

Ate

> 
> Many thanks
> Carsten
> 
> 



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


Re: How to integrate bridges?

Posted by Carsten Ziegeler <cz...@apache.org>.
Ate Douma wrote:
> 
> The ActionForm CategoryBean used by the Catalog.jsp seems to be filled in during
> the actionRequest and stored in the session. During the subsequent renderRequest
> the same CategoryBean *is* retrieved again. So, if the DefineTag is getting a null
> value (from catalogBean .getCategory() or .getProductList()) I suggest debugging
> the CategoryBean.viewCategory() method which is invoked by the ActionBean
> during the actionRequest. That should retrieve and fill in the required values from
> the database. Then, if that works, debug the getCategory() and getProductList()
> method when invoked from the defineTag.
> 
Many thanks for the info - now, debugging revealed that the category is
never set,
so the setter of the bean is not invoked. Can you please help me again,
and tell me
who triggers the setter?

Many thanks
Carsten


-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Carsten Ziegeler wrote:
> Ate Douma wrote:
> 
>>Yes it is supposed to work, and it works very well in Jetspeed.
> 
> :( So the problem must be on my side
> 
> The jpetstore sample is working, the database seems to work as well.
> When clicking on a category, e.g. cat, I get the following exception. I
> added the stacktrace and the debug output. Perhaps you can give me a
> hint where I can look at to find the bug?
The ActionForm CategoryBean used by the Catalog.jsp seems to be filled in during
the actionRequest and stored in the session. During the subsequent renderRequest
the same CategoryBean *is* retrieved again. So, if the DefineTag is getting a null
value (from catalogBean .getCategory() or .getProductList()) I suggest debugging
the CategoryBean.viewCategory() method which is invoked by the ActionBean
during the actionRequest. That should retrieve and fill in the required values from
the database. Then, if that works, debug the getCategory() and getProductList()
method when invoked from the defineTag.

Regards, Ate

> 
> Thanks
> Carsten
> ----
> Define tag cannot set a null value
> Error Type javax.servlet.jsp.JspException
> Stacktrace
> org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:238)
> org.apache.jsp.catalog.Category_jsp._jspService(org.apache.jsp.catalog.Category_jsp:300)
> org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
> org.apache.portals.bridges.struts.PortletServletRequestDispatcher.invoke(PortletServletRequestDispatcher.java:128)
> org.apache.portals.bridges.struts.PortletServletRequestDispatcher.include(PortletServletRequestDispatcher.java:146)
> org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1087)
> ----
> This is the debug output:
> 
> DEBUG [http-8080-Processor25] - process path:
> /shop/viewCategory.shtml?categoryId=CATS, requestType: ACTION
> DEBUG [http-8080-Processor25] - Get module name for path
> /shop/viewCategory.shtml
> DEBUG [http-8080-Processor25] - Module name found: default
> DEBUG [http-8080-Processor25] - Processing a 'GET' for path
> '/shop/viewCategory'
> DEBUG [http-8080-Processor25] -  Looking for ActionForm bean instance in
> scope '
> session' under attribute key 'catalogBean'
> DEBUG [http-8080-Processor25] -  Can recycle existing ActionForm
> instance of type 'com.ibatis.jpetstore.presentation.CatalogBean'?: true
> DEBUG [http-8080-Processor25] -  -->
> com.ibatis.jpetstore.presentation.CatalogBean@557d7e
> DEBUG [http-8080-Processor25] -  Storing ActionForm bean instance in
> scope 'session' under attribute key 'catalogBean'
> DEBUG [http-8080-Processor25] -  Populating bean properties from this
> request
> DEBUG [http-8080-Processor25] -
> BeanUtils.populate(com.ibatis.jpetstore.presentation.CatalogBean@557d7e,
> {cocoon-portal-event=[Ljava.lang.String;@a2bd15, _spage
> =[Ljava.lang.String;@2bc184, _sorig=[Ljava.lang.String;@adc446})
> DEBUG [http-8080-Processor25] setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, cocoon-portal-event, [21])
> DEBUG [http-8080-Processor25] -
> setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, _spage, [/shop/viewCategory.shtml?categoryId=CATS])
> DEBUG [http-8080-Processor25] -
> setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, _sorig, [/shop/index.shtml])
> DEBUG [http-8080-Processor25] -  Looking for Action instance for class
> com.ibatis.struts.BeanAction
> DEBUG [http-8080-Processor25] -   Returning existing Action instance
> DEBUG [http-8080-Processor25] -
> processForwardConfig(ForwardConfig[name=success,
> path=/shop/showCategory.shtml,redirect=true,contextRelative=false,module=null])
> DEBUG [http-8080-Processor25] - action render redirected page:
> /shop/showCategory.shtml
> DEBUG [http-8080-Processor24] - process path: /shop/showCategory.shtml,
> requestT
> ype: VIEW
> DEBUG [http-8080-Processor24] - Get module name for path
> /shop/showCategory.shtm
> l
> DEBUG [http-8080-Processor24] - Module name found: default
> DEBUG [http-8080-Processor24] - Processing a 'GET' for path
> '/shop/showCategory'
> 
> DEBUG [http-8080-Processor24] -  Looking for ActionForm bean instance in
> scope '
> session' under attribute key 'catalogBean'
> DEBUG [http-8080-Processor24] -  Can recycle existing ActionForm
> instance of typ
> e 'com.ibatis.jpetstore.presentation.CatalogBean'?: true
> DEBUG [http-8080-Processor24] -  -->
> com.ibatis.jpetstore.presentation.CatalogBe
> an@557d7e
> DEBUG [http-8080-Processor24] -  Storing ActionForm bean instance in
> scope 'sess
> ion' under attribute key 'catalogBean'
> DEBUG [http-8080-Processor24] -  Populating bean properties from this
> request
> DEBUG [http-8080-Processor24] -
> BeanUtils.populate(com.ibatis.jpetstore.presenta
> tion.CatalogBean@557d7e, {_kra=[Ljava.lang.String;@182815a,
> cocoon-portal-event=[Ljava.lang.String;@fa4dec,
> _spage=[Ljava.lang.String;@111e86f})
> DEBUG [http-8080-Processor24] -
> setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, _kra, [1])
> DEBUG [http-8080-Processor24] -
> setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, cocoon-portal-event, [0])
> DEBUG [http-8080-Processor24] -
> setProperty(com.ibatis.jpetstore.presentation.
> CatalogBean@557d7e, _spage, [/shop/showCategory.shtml])
> DEBUG [http-8080-Processor24] -  Delegating via include to
> '/catalog/Category.jsp'
> DEBUG [http-8080-Processor24] - invoking   dispatch to
> :/catalog/Category.jsp, from VIEW /shop/showCategory.shtml
> DEBUG [http-8080-Processor24] - JspEngine --> /catalog/Category.jsp
> DEBUG [http-8080-Processor24] -              ServletPath:
> /catalog/Category.jsp
> DEBUG [http-8080-Processor24] -                 PathInfo: null
> DEBUG [http-8080-Processor24] -                 RealPath:
> D:\apps\jakarta-tomcat-5.5.9\webapps\jpetstore\catalog\Category.jsp
> DEBUG [http-8080-Processor24] -               RequestURI:
> /jpetstore/catalog/Category.jsp
> DEBUG [http-8080-Processor24] -              QueryString: null
> DEBUG [http-8080-Processor24] -           Request Params:
> DEBUG [http-8080-Processor24] -                  _kra = 1
> DEBUG [http-8080-Processor24] -                  cocoon-portal-event = 0
> DEBUG [http-8080-Processor24] -                  _spage =
> /shop/showCategory.sht
> DEBUG [http-8080-Processor24] - Initializing,
> config='org.apache.struts.taglib.bean.LocalStrings', returnNull=true
> DEBUG [http-8080-Processor24] - getMessage(de_DE,define.null)
> DEBUG [http-8080-Processor24] - loadLocale(de_DE)
> DEBUG [http-8080-Processor24] -   Loading resource
> 'org/apache/struts/taglib/bean/LocalStrings_de_DE.properties'
> DEBUG [http-8080-Processor24] -   Loading resource completed
> DEBUG [http-8080-Processor24] - loadLocale(de)
> DEBUG [http-8080-Processor24] -   Loading resource
> 'org/apache/struts/taglib/bean/LocalStrings_de.properties'
> DEBUG [http-8080-Processor24] -   Loading resource completed
> DEBUG [http-8080-Processor24] - loadLocale()
> DEBUG [http-8080-Processor24] -   Loading resource
> 'org/apache/struts/taglib/bean/LocalStrings.properties'
> DEBUG [http-8080-Processor24] -   Loading resource completed
> DEBUG [http-8080-Processor24] -   Saving message key '.message.message
> DEBUG [http-8080-Processor24] -   Saving message key '.include.read
> DEBUG [http-8080-Processor24] -   Saving message key '.header.get
> DEBUG [http-8080-Processor24] -   Saving message key '.include.destination
> DEBUG [http-8080-Processor24] -   Saving message key '.struts.missing
> DEBUG [http-8080-Processor24] -   Saving message key '.include.url
> DEBUG [http-8080-Processor24] -   Saving message key '.cookie.get
> DEBUG [http-8080-Processor24] -   Saving message key '.parameter.get
> DEBUG [http-8080-Processor24] -   Saving message key '.include.forwards
> DEBUG [http-8080-Processor24] -   Saving message key '.include.malformed
> DEBUG [http-8080-Processor24] -   Saving message key
> '.size.noCollectionOrName
> DEBUG [http-8080-Processor24] -   Saving message key '.message.resources
> DEBUG [http-8080-Processor24] -   Saving message key '.page.selector
> DEBUG [http-8080-Processor24] -   Saving message key '.message.property
> DEBUG [http-8080-Processor24] -   Saving message key '.resource.get
> DEBUG [http-8080-Processor24] -   Saving message key '.write.format
> DEBUG [http-8080-Processor24] -   Saving message key '.include.forward
> DEBUG [http-8080-Processor24] -   Saving message key '.define.null
> DEBUG [http-8080-Processor24] -   Saving message key '.struts.selector
> DEBUG [http-8080-Processor24] -   Saving message key '.define.value
> DEBUG [http-8080-Processor24] -   Saving message key '.include.open
> DEBUG [http-8080-Processor24] -   Saving message key '.size.collection
> ERROR [http-8080-Processor24] - Servlet.service() for servlet jsp threw
> exceptio



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


Re: How to integrate bridges?

Posted by Carsten Ziegeler <cz...@apache.org>.
Ate Douma wrote:
> 
> Yes it is supposed to work, and it works very well in Jetspeed.
:( So the problem must be on my side

The jpetstore sample is working, the database seems to work as well.
When clicking on a category, e.g. cat, I get the following exception. I
added the stacktrace and the debug output. Perhaps you can give me a
hint where I can look at to find the bug?

Thanks
Carsten
----
Define tag cannot set a null value
Error Type javax.servlet.jsp.JspException
Stacktrace
org.apache.struts.taglib.bean.DefineTag.doEndTag(DefineTag.java:238)
org.apache.jsp.catalog.Category_jsp._jspService(org.apache.jsp.catalog.Category_jsp:300)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:574)
org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:499)
org.apache.portals.bridges.struts.PortletServletRequestDispatcher.invoke(PortletServletRequestDispatcher.java:128)
org.apache.portals.bridges.struts.PortletServletRequestDispatcher.include(PortletServletRequestDispatcher.java:146)
org.apache.struts.action.RequestProcessor.doInclude(RequestProcessor.java:1087)
----
This is the debug output:

DEBUG [http-8080-Processor25] - process path:
/shop/viewCategory.shtml?categoryId=CATS, requestType: ACTION
DEBUG [http-8080-Processor25] - Get module name for path
/shop/viewCategory.shtml
DEBUG [http-8080-Processor25] - Module name found: default
DEBUG [http-8080-Processor25] - Processing a 'GET' for path
'/shop/viewCategory'
DEBUG [http-8080-Processor25] -  Looking for ActionForm bean instance in
scope '
session' under attribute key 'catalogBean'
DEBUG [http-8080-Processor25] -  Can recycle existing ActionForm
instance of type 'com.ibatis.jpetstore.presentation.CatalogBean'?: true
DEBUG [http-8080-Processor25] -  -->
com.ibatis.jpetstore.presentation.CatalogBean@557d7e
DEBUG [http-8080-Processor25] -  Storing ActionForm bean instance in
scope 'session' under attribute key 'catalogBean'
DEBUG [http-8080-Processor25] -  Populating bean properties from this
request
DEBUG [http-8080-Processor25] -
BeanUtils.populate(com.ibatis.jpetstore.presentation.CatalogBean@557d7e,
{cocoon-portal-event=[Ljava.lang.String;@a2bd15, _spage
=[Ljava.lang.String;@2bc184, _sorig=[Ljava.lang.String;@adc446})
DEBUG [http-8080-Processor25] setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, cocoon-portal-event, [21])
DEBUG [http-8080-Processor25] -
setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, _spage, [/shop/viewCategory.shtml?categoryId=CATS])
DEBUG [http-8080-Processor25] -
setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, _sorig, [/shop/index.shtml])
DEBUG [http-8080-Processor25] -  Looking for Action instance for class
com.ibatis.struts.BeanAction
DEBUG [http-8080-Processor25] -   Returning existing Action instance
DEBUG [http-8080-Processor25] -
processForwardConfig(ForwardConfig[name=success,
path=/shop/showCategory.shtml,redirect=true,contextRelative=false,module=null])
DEBUG [http-8080-Processor25] - action render redirected page:
/shop/showCategory.shtml
DEBUG [http-8080-Processor24] - process path: /shop/showCategory.shtml,
requestT
ype: VIEW
DEBUG [http-8080-Processor24] - Get module name for path
/shop/showCategory.shtm
l
DEBUG [http-8080-Processor24] - Module name found: default
DEBUG [http-8080-Processor24] - Processing a 'GET' for path
'/shop/showCategory'

DEBUG [http-8080-Processor24] -  Looking for ActionForm bean instance in
scope '
session' under attribute key 'catalogBean'
DEBUG [http-8080-Processor24] -  Can recycle existing ActionForm
instance of typ
e 'com.ibatis.jpetstore.presentation.CatalogBean'?: true
DEBUG [http-8080-Processor24] -  -->
com.ibatis.jpetstore.presentation.CatalogBe
an@557d7e
DEBUG [http-8080-Processor24] -  Storing ActionForm bean instance in
scope 'sess
ion' under attribute key 'catalogBean'
DEBUG [http-8080-Processor24] -  Populating bean properties from this
request
DEBUG [http-8080-Processor24] -
BeanUtils.populate(com.ibatis.jpetstore.presenta
tion.CatalogBean@557d7e, {_kra=[Ljava.lang.String;@182815a,
cocoon-portal-event=[Ljava.lang.String;@fa4dec,
_spage=[Ljava.lang.String;@111e86f})
DEBUG [http-8080-Processor24] -
setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, _kra, [1])
DEBUG [http-8080-Processor24] -
setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, cocoon-portal-event, [0])
DEBUG [http-8080-Processor24] -
setProperty(com.ibatis.jpetstore.presentation.
CatalogBean@557d7e, _spage, [/shop/showCategory.shtml])
DEBUG [http-8080-Processor24] -  Delegating via include to
'/catalog/Category.jsp'
DEBUG [http-8080-Processor24] - invoking   dispatch to
:/catalog/Category.jsp, from VIEW /shop/showCategory.shtml
DEBUG [http-8080-Processor24] - JspEngine --> /catalog/Category.jsp
DEBUG [http-8080-Processor24] -              ServletPath:
/catalog/Category.jsp
DEBUG [http-8080-Processor24] -                 PathInfo: null
DEBUG [http-8080-Processor24] -                 RealPath:
D:\apps\jakarta-tomcat-5.5.9\webapps\jpetstore\catalog\Category.jsp
DEBUG [http-8080-Processor24] -               RequestURI:
/jpetstore/catalog/Category.jsp
DEBUG [http-8080-Processor24] -              QueryString: null
DEBUG [http-8080-Processor24] -           Request Params:
DEBUG [http-8080-Processor24] -                  _kra = 1
DEBUG [http-8080-Processor24] -                  cocoon-portal-event = 0
DEBUG [http-8080-Processor24] -                  _spage =
/shop/showCategory.sht
DEBUG [http-8080-Processor24] - Initializing,
config='org.apache.struts.taglib.bean.LocalStrings', returnNull=true
DEBUG [http-8080-Processor24] - getMessage(de_DE,define.null)
DEBUG [http-8080-Processor24] - loadLocale(de_DE)
DEBUG [http-8080-Processor24] -   Loading resource
'org/apache/struts/taglib/bean/LocalStrings_de_DE.properties'
DEBUG [http-8080-Processor24] -   Loading resource completed
DEBUG [http-8080-Processor24] - loadLocale(de)
DEBUG [http-8080-Processor24] -   Loading resource
'org/apache/struts/taglib/bean/LocalStrings_de.properties'
DEBUG [http-8080-Processor24] -   Loading resource completed
DEBUG [http-8080-Processor24] - loadLocale()
DEBUG [http-8080-Processor24] -   Loading resource
'org/apache/struts/taglib/bean/LocalStrings.properties'
DEBUG [http-8080-Processor24] -   Loading resource completed
DEBUG [http-8080-Processor24] -   Saving message key '.message.message
DEBUG [http-8080-Processor24] -   Saving message key '.include.read
DEBUG [http-8080-Processor24] -   Saving message key '.header.get
DEBUG [http-8080-Processor24] -   Saving message key '.include.destination
DEBUG [http-8080-Processor24] -   Saving message key '.struts.missing
DEBUG [http-8080-Processor24] -   Saving message key '.include.url
DEBUG [http-8080-Processor24] -   Saving message key '.cookie.get
DEBUG [http-8080-Processor24] -   Saving message key '.parameter.get
DEBUG [http-8080-Processor24] -   Saving message key '.include.forwards
DEBUG [http-8080-Processor24] -   Saving message key '.include.malformed
DEBUG [http-8080-Processor24] -   Saving message key
'.size.noCollectionOrName
DEBUG [http-8080-Processor24] -   Saving message key '.message.resources
DEBUG [http-8080-Processor24] -   Saving message key '.page.selector
DEBUG [http-8080-Processor24] -   Saving message key '.message.property
DEBUG [http-8080-Processor24] -   Saving message key '.resource.get
DEBUG [http-8080-Processor24] -   Saving message key '.write.format
DEBUG [http-8080-Processor24] -   Saving message key '.include.forward
DEBUG [http-8080-Processor24] -   Saving message key '.define.null
DEBUG [http-8080-Processor24] -   Saving message key '.struts.selector
DEBUG [http-8080-Processor24] -   Saving message key '.define.value
DEBUG [http-8080-Processor24] -   Saving message key '.include.open
DEBUG [http-8080-Processor24] -   Saving message key '.size.collection
ERROR [http-8080-Processor24] - Servlet.service() for servlet jsp threw
exceptio
-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Carsten Ziegeler wrote:
> Ate Douma wrote:
> 
>>Sample apps using the bridges are still part of Jetspeed-2.
>>We already having some discussions about moving pure bridges bases
>>examples to the bridges project itself though.
>>You can build/adapt the examples yourself if you download the jetspeed-2
>>sources, or you can download the prebuild wars like from
>>  http://www.bluesunrise.com/maven/jetspeed2/wars/.
>>A good testcase example probably is the jpetstore (Struts bridge).
>>
> 
> I tried the jpetstore war from above, and it works now in the Cocoon
> portal - well partially. I get the front page in the portal and can
> click the link to see the categories but clicking on any category
> results in an jsp error. Is this sample supposed to work? If so, I have
> to search for a bug in our container implementation :(
Yes it is supposed to work, and it works very well in Jetspeed.
What you might want to look at is the database access.
The JPetstore demo provides an embedded hsqldb database for which the
file location access is dynamically configured on first usage.
Look at the com.ibatis.jpetstore.persistence.LocalHsqldbConfigurator
listener configured in web.xml.
It will write out the WEB-INF/classes/db/database.properties file
containing the db (hsqldb) connection parameters, including the
database location in the url property.
If that doesn't work for some reason you can edit/create it yourself
with the following contents:
   driver=org.hsqldb.jdbcDriver
   url=jdbc:hsqldb:D:/tomcat5.5/webapps/jpetstore/WEB-INF/db/jpetstore
   username=sa
   password=

The above example is for my local tomcat 5.5 installation. You will need
to adjust the url property to your setup.
Of course, this isn't a real solution but at least you then can test the
portlet (and container) itself.

Hope this helps.

Ate

> 
> Carsten



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


Re: How to integrate bridges?

Posted by Carsten Ziegeler <cz...@apache.org>.
Ate Douma wrote:
> 
> Sample apps using the bridges are still part of Jetspeed-2.
> We already having some discussions about moving pure bridges bases
> examples to the bridges project itself though.
> You can build/adapt the examples yourself if you download the jetspeed-2
> sources, or you can download the prebuild wars like from
>   http://www.bluesunrise.com/maven/jetspeed2/wars/.
> A good testcase example probably is the jpetstore (Struts bridge).
> 
I tried the jpetstore war from above, and it works now in the Cocoon
portal - well partially. I get the front page in the portal and can
click the link to see the categories but clicking on any category
results in an jsp error. Is this sample supposed to work? If so, I have
to search for a bug in our container implementation :(

Carsten
-- 
Carsten Ziegeler - Open Source Group, S&N AG
http://www.s-und-n.de
http://www.osoco.org/weblogs/rael/

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


Re: How to integrate bridges?

Posted by Ate Douma <at...@douma.nu>.
Carsten Ziegeler said:
> Hi,
>
> I\'m interested in integrating bridges into the Cocoon portal. Now, the
> question is, what do I have to do on the portal part? I implemented the
> ServletContextProvider interface, but I guess that there is more to do.
No :-)

This should be enough at the portal site.

>
> The second question is, are there any samples to test the bridge?
Sample apps using the bridges are still part of Jetspeed-2.
We already having some discussions about moving pure bridges bases
examples to the bridges project itself though.
You can build/adapt the examples yourself if you download the jetspeed-2
sources, or you can download the prebuild wars like from
  http://www.bluesunrise.com/maven/jetspeed2/wars/.
A good testcase example probably is the jpetstore (Struts bridge).

Note: you will have to modify the portlet.xml and specify your
implementation class for the ServletContextProvider (and provide it from
somewhere of course).

Regards, Ate

>
> Thanks
> Carsten
>
> --
> Carsten Ziegeler - Open Source Group, S&N AG
> http://www.s-und-n.de
> http://www.osoco.org/weblogs/rael/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: bridges-dev-unsubscribe@portals.apache.org
> For additional commands, e-mail: bridges-dev-help@portals.apache.org
>
>


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