Deploy portlet to Portal Server 7?

Hi,

Has anyone successfully deploy a JSR168 portlet that is created from Studio Creator and deploy it on portal server 7. The portlet works fine on the pluto portal server that come with the creator. however, when i try to deploy it to portal server 7 (through psconsole), it only show the message "ERROR: Content is not available" On the log from the portal, it gives the following exception:

Exception thrown from JSPTabContainer/MyFrontPageTabPanelContainer/PortletEcho com.sun.portal.desktop.context.ContextError: couldn't fetch content at com.sun.portal.desktop.context.ReusableProviderCaller.run(ReusableProviderCalle r.java:186)

I saw some postings about removing the portlet.jar file from the war file and editing the web.xml file. but it didn't work for me. Are there any places that i could look at ?

thanx & rgds,

[863 byte] By [novicess] at [2007-11-26 11:50:41]
# 1

Check your data sources (this happens to me when i am using bad data sources for my db connection).

1) Make sure the jdbc data source is named the same in the creator appserver as the remote app server (jdbc/..)

2) Make sure you map the data source correctly. This means after you build the way file in creator (right click on project->build war->java 1.4), you need to open it (jar xvf warfilename.war), and add a file called sun-web.xml into the WEB-INF folder. This maps code jdbc resources to server jdbc resources. A sample that I use in one of my portlets is:

<sun-web-app error-url="">

<resource-ref>

<res-ref-name>jdbc/ps3_p1_main</res-ref-name>

<jndi-name>jdbc/ps3_p1_main</jndi-name>

</resource-ref>

</sun-web-app>

Now, you need to rebundle the war (jar cvf warfilename.war *) from the main directory (a cd .. from WEB-INF works fine). DON'T FORGET TO DELETE THE OLD WAR BEFORE CREATING THE NEW ONE!

Now you should be able to upload and deploy the portlet without issues. Why you have to do this? Ask the creator team, portlets and their development never seem to be high on their list.

Finally, when coming up against portlet errors, SUN PS7 doesn't really give you helpful logging like pluto. To fix this, follow the steps in this blog: http://blogs.sun.com/gregz/entry/portal_server_7_swallows_up

You should now be able to get a clue as to what is causing your error from the portal logs now.

jbjonesjr at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 2

Hi,

Thanks for your reply....

For this instance, i do not have any data source. Do I still need to add the sun-web.xml file?

Also, I am using Web Server 6.1 as my container, i choose javaee 1.3 option to export my war.

I have also change the log to "finest" from psconsole. but still can't give me any meaningful details for me to debug.

rgds

novicess at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 3

if you are not using a datasource, then no need for the sun-web.xml file.

You need to kick (restart) the container and appserver before the new log level will take affect, and that WILL give you a detailed exception in the PORTAL LOG (not the web server log) of what is going wrong. Make sure to change your log level to finest when searching through the portal log as well.

Once you restart the container/portal server, navigate over to the failing portal, and then check out the log.

jbjonesjr at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 4

Thx,

I got these log below which I saw you (jbjonesjr) have experience before. how did u manage to fix this bug>?

Log Level: INFO

Logger: debug.com.sun.portal.container.portlet.impl

Name-Value Pairs: ThreadID=111; ClassName=com.sun.portal.container.portlet.impl.PortletContainer; MethodName=invokePAE;

Message ID: PSPL_PCCSPCPCI0002

Complete Message:

PortletContainer.invokePAE(): invoking: app name /PortletEcho portlet name PortletEcho action RENDER

novicess at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 5

i'm not sure if that is an actual error. it seems to be more of just a general line in the log. Log for lines starting with ERROR or WARNING (and don't forget to set the log level from INFO to FINEST, as most errors are generated at that finest level). See if you can find any exceptions or associated errors

jbjonesjr at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 6

From all the logs that are given, those are the exceptions that I think that might cause the issues, I need some help to find out the root of the problem.

Environment: Solaris 10 (Sparc), WebServer 6.1, PortalServer 7, AMServer7, Directory Server 5 in same box.

1) INFO: Exception thrown from JSPTabContainer/TestChannel/PortletEcho com.sun.portal.desktop.context.ContextError: couldn't fetch content at com.sun.portal.desktop.context.ReusableProviderCaller.run(ReusableProviderCalle r.java:186)

2) FINE: Content from container response is null for portlet channel JSPTabContainer/TestChannel/PortletEcho.

3) FINEST: DesktopServlet.showLocalAuth: Invalid session - redirecting to : action

4) WARNING : exception: com.sun.portal.community.mc.CMCException: javax.jdo.JDODataStoreException: Failed initialising database. Please check that your database JDBC driver is accessible, and the database URL and username/password are correct. Exception : java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null org.apache.derby.client.am.SqlException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at org.apache.derby.client.net.NetAgent.<init>(NetAgent.java:114) at org.apache.derby.client.net.NetConnection.newAgent_(NetConnection.java:949) at org.apache.derby.client.am.Connection.initConnection(Connection.java:170) at org.apache.derby.client.am.Connection.<init>(Connection.java:146) at org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:203) at org.apache.derby.jdbc.ClientDataSource.getConnection(ClientDataSource.java:162) at com.sun.enterprise.resource.JdbcAllocator.createResource(JdbcAllocator.java:100 ) at com.sun.enterprise.resource.IASNonSharedResourcePool.createSteadyResources(IASN onSharedResourcePool.java:865) at com.sun.enterprise.resource.IASNonSharedResourcePool.initPool(IASNonSharedResou rcePool.java:360) at com.sun.enterprise.resource.IASNonSharedResourcePool.internalGetResource(IASNon SharedResourcePool.java:598) at com.sun.enterprise.resource.IASNonSharedResourcePool.getResource(IASNonSharedRe sourcePool.java:490) at com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(PoolManagerImpl .java:189) at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:93 ) at com.sun.enterprise.resource.JdbcDataSource.internalGetConnection(JdbcDataSource .java:201) at com.sun.enterprise.resource.JdbcDataSource.getConnection(JdbcDataSource.java:13 2) at org.jpox.driver.JPOXDriver.connect(JPOXDriver.java:100) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:193) at org.jpox.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:69) at org.jpox.store.rdbms.RDBMSManager.<init>(RDBMSManager.java:215) at org.jpox.store.rdbms.RDBMSManagerFactory.getStoreManager(RDBMSManagerFactory.ja va:59) at org.jpox.AbstractPersistenceManager.<init>(AbstractPersistenceManager.jav a:194) at org.jpox.PersistenceManagerImpl.<init>(PersistenceManagerImpl.java:34) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:811) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:786) at com.sun.portal.community.mc.impl.jdo.CMCImpl.getPersistenceManager(CMCImpl.java :609) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :60) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :54) at com.sun.portal.community.mc.impl.manager.CMCUserImpl.getMembership(CMCUserImpl. java:79) at com.sun.portal.desktop.context.PSDesktopContext.gearUpMembership(PSDesktopConte xt.java:628) at com.sun.portal.desktop.context.PSDesktopContext.updateMembership(PSDesktopConte xt.java:652) at com.sun.portal.desktop.context.PSDesktopContext.refresh(PSDesktopContext.java:4 48) at com.sun.portal.desktop.DesktopServlet.doGetPost(DesktopServlet.java:499) at com.sun.portal.desktop.DesktopServlet.service(DesktopServlet.java:309) at javax.servlet.http.HttpServlet.service(HttpServlet.java:908) at org.apache.catalina.core.StandardWrapperValve.invokeServletService(StandardWrap perValve.java:771) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 322) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 218) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:209) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java: 157) at com.iplanet.ias.web.WebContainer.service(WebContainer.java:579) NestedThrowables: org.apache.derby.client.am.SqlException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at com.sun.portal.community.mc.impl.jdo.CMCImpl.getPersistenceManager(CMCImpl.java :611) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :60) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :54) at com.sun.portal.community.mc.impl.manager.CMCUserImpl.getMembership(CMCUserImpl. java:79) at com.sun.portal.desktop.context.PSDesktopContext.gearUpMembership(PSDesktopConte xt.java:628) at com.sun.portal.desktop.context.PSDesktopContext.updateMembership(PSDesktopConte xt.java:652) at com.sun.portal.desktop.context.PSDesktopContext.refresh(PSDesktopContext.java:4 48) at com.sun.portal.desktop.DesktopServlet.doGetPost(DesktopServlet.java:499) at com.sun.portal.desktop.DesktopServlet.service(DesktopServlet.java:309) at javax.servlet.http.HttpServlet.service(HttpServlet.java:908) at org.apache.catalina.core.StandardWrapperValve.invokeServletService(StandardWrap perValve.java:771) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 322) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 218) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:209) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java: 157) at com.iplanet.ias.web.WebContainer.service(WebContainer.java:579) Caused by: javax.jdo.JDODataStoreException: Failed initialising database. Please check that your database JDBC driver is accessible, and the database URL and username/password are correct. Exception : java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null org.apache.derby.client.am.SqlException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at org.apache.derby.client.net.NetAgent.<init>(NetAgent.java:114) at org.apache.derby.client.net.NetConnection.newAgent_(NetConnection.java:949) at org.apache.derby.client.am.Connection.initConnection(Connection.java:170) at org.apache.derby.client.am.Connection.<init>(Connection.java:146) at org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:203) at org.apache.derby.jdbc.ClientDataSource.getConnection(ClientDataSource.java:162) at com.sun.enterprise.resource.JdbcAllocator.createResource(JdbcAllocator.java:100 ) at com.sun.enterprise.resource.IASNonSharedResourcePool.createSteadyResources(IASN onSharedResourcePool.java:865) at com.sun.enterprise.resource.IASNonSharedResourcePool.initPool(IASNonSharedResou rcePool.java:360) at com.sun.enterprise.resource.IASNonSharedResourcePool.internalGetResource(IASNon SharedResourcePool.java:598) at com.sun.enterprise.resource.IASNonSharedResourcePool.getResource(IASNonSharedRe sourcePool.java:490) at com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(PoolManagerImpl .java:189) at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:93 ) at com.sun.enterprise.resource.JdbcDataSource.internalGetConnection(JdbcDataSource .java:201) at com.sun.enterprise.resource.JdbcDataSource.getConnection(JdbcDataSource.java:13 2) at org.jpox.driver.JPOXDriver.connect(JPOXDriver.java:100) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:193) at org.jpox.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:69) at org.jpox.store.rdbms.RDBMSManager.<init>(RDBMSManager.java:215) at org.jpox.store.rdbms.RDBMSManagerFactory.getStoreManager(RDBMSManagerFactory.ja va:59) at org.jpox.AbstractPersistenceManager.<init>(AbstractPersistenceManager.jav a:194) at org.jpox.PersistenceManagerImpl.<init>(PersistenceManagerImpl.java:34) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:811) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:786) at com.sun.portal.community.mc.impl.jdo.CMCImpl.getPersistenceManager(CMCImpl.java :609) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :60) at com.sun.portal.community.mc.impl.jdo.CMCUserImpl.getMembership(CMCUserImpl.java :54) at com.sun.portal.community.mc.impl.manager.CMCUserImpl.getMembership(CMCUserImpl. java:79) at com.sun.portal.desktop.context.PSDesktopContext.gearUpMembership(PSDesktopConte xt.java:628) at com.sun.portal.desktop.context.PSDesktopContext.updateMembership(PSDesktopConte xt.java:652) at com.sun.portal.desktop.context.PSDesktopContext.refresh(PSDesktopContext.java:4 48) at com.sun.portal.desktop.DesktopServlet.doGetPost(DesktopServlet.java:499) at com.sun.portal.desktop.DesktopServlet.service(DesktopServlet.java:309) at javax.servlet.http.HttpServlet.service(HttpServlet.java:908) at org.apache.catalina.core.StandardWrapperValve.invokeServletService(StandardWrap perValve.java:771) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 322) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 218) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:209) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509) at com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java: 157) at com.iplanet.ias.web.WebContainer.service(WebContainer.java:579) NestedThrowables: org.apache.derby.client.am.SqlException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at org.jpox.store.rdbms.RDBMSManager.<init>(RDBMSManager.java:267) at org.jpox.store.rdbms.RDBMSManagerFactory.getStoreManager(RDBMSManagerFactory.ja va:59) at org.jpox.AbstractPersistenceManager.<init>(AbstractPersistenceManager.jav a:194) at org.jpox.PersistenceManagerImpl.<init>(PersistenceManagerImpl.java:34) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:811) at org.jpox.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManager FactoryImpl.java:786) at com.sun.portal.community.mc.impl.jdo.CMCImpl.getPersistenceManager(CMCImpl.java :609) ... 18 more Caused by: org.apache.derby.client.am.SqlException: java.security.PrivilegedActionException : Error opening socket to server localhost on port 1527 with message : null at org.apache.derby.client.net.NetAgent.<init>(NetAgent.java:114) at org.apache.derby.client.net.NetConnection.newAgent_(NetConnection.java:949) at org.apache.derby.client.am.Connection.initConnection(Connection.java:170) at org.apache.derby.client.am.Connection.<init>(Connection.java:146) at org.apache.derby.client.net.NetConnection.<init>(NetConnection.java:203) at org.apache.derby.jdbc.ClientDataSource.getConnection(ClientDataSource.java:162) at com.sun.enterprise.resource.JdbcAllocator.createResource(JdbcAllocator.java:100 ) at com.sun.enterprise.resource.IASNonSharedResourcePool.createSteadyResources(IASN onSharedResourcePool.java:865) at com.sun.enterprise.resource.IASNonSharedResourcePool.initPool(IASNonSharedResou rcePool.java:360) at com.sun.enterprise.resource.IASNonSharedResourcePool.internalGetResource(IASNon SharedResourcePool.java:598) at com.sun.enterprise.resource.IASNonSharedResourcePool.getResource(IASNonSharedRe sourcePool.java:490) at com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(PoolManagerImpl .java:189) at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:93 ) at com.sun.enterprise.resource.JdbcDataSource.internalGetConnection(JdbcDataSource .java:201) at com.sun.enterprise.resource.JdbcDataSource.getConnection(JdbcDataSource.java:13 2) at org.jpox.driver.JPOXDriver.connect(JPOXDriver.java:100) at java.sql.DriverManager.getConnection(DriverManager.java:525) at java.sql.DriverManager.getConnection(DriverManager.java:193) at org.jpox.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:69) at org.jpox.store.rdbms.RDBMSManager.<init>(RDBMSManager.java:215) ... 24 more

5) WARNING: could not get membership for user contributor type "jdo"

novicess at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...
# 7

i think i found out where could cause the problem, but not quite absolutely sure.

the problem is in the portlet.xml inside my war file that is generated by Studio Creator. The Portal Server simply does not understand the stuff in <init-param> in my case:

<init-param>

<name>com.sun.faces.portlet.INIT_VIEW</name>

<value>/PortletPage1.jsp</value>

</init-param>

whereas there are no tags and values for <portlet-preferences>

<preference>

<name>contentPage</name>

<value>/jspportlet/content.jsp</value>

</preference>

This is simply observation and comparison to the portalsamples.war that come with the portal server.

Can anyone from SUN comment on this?

thx

novicess at 2007-7-7 12:05:07 > top of Java-index,Development Tools,Java Tools...