jboss ipc
habicht Sep 20, 2007 1:40 AMhello
i'm trying to solve i problem i have with jboss ipc in the example from the reference guide. i have everything configured according to the reference guide (*-object.xml, jboss-service.xml, sar-achrive). everything deployes fine without problems. when i try nothing happens. the parameters don't show up on the second portlet. even after that there are no errors in my log and according to that log my listener defined in the jboss-service.xml is registered.
my first problem i had with this example is now solved. it was because i didn't have the right structure of the sar-file (which caused a NoClassDefFound-Exception)
my-object.xml:
<page-name>test</page-name> <properties/> <window> <window-name>test1-window</window-name> <instance-ref>AInstance</instance-ref> <region>center</region> <height>0</height> </window> <window> <window-name>test2-window</window-name> <instance-ref>BInstance</instance-ref> <region>center</region> <height>0</height> <listener>test_listener</listener> </window>
jboss-service.xml:
<?xml version="1.0" encoding="UTF-8"?> <server> <mbean code="org.jboss.portal.core.event.PortalEventListenerServiceImpl" name="portal:service=ListenerService,type=test_listener" xmbean-dd="" xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean"> <xmbean/> <depends optional-attribute-name="Registry" proxy-type="attribute">portal:service=ListenerRegistry</depends> <attribute name="RegistryId">test_listener</attribute> <attribute name="ListenerClassName">test.PortletB$Listener</attribute> </mbean> </server>
PortletB.java
package test; import java.io.IOException; import java.io.PrintWriter; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.jboss.portal.WindowState; import org.jboss.portal.api.node.PortalNode; import org.jboss.portal.api.node.event.PortalNodeEvent; import org.jboss.portal.api.node.event.PortalNodeEventContext; import org.jboss.portal.api.node.event.PortalNodeEventListener; import org.jboss.portal.api.node.event.WindowActionEvent; public class PortletB extends GenericPortlet { public void processAction(ActionRequest request, ActionResponse response) throws PortletException, PortletSecurityException, IOException { String color = request.getParameter("color"); if (color != null) { response.setRenderParameter("color", color); } } protected void doView(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException { String color = request.getParameter("color"); response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<div" + (color == null ? "" : " style=\"color:" + color + ";\"") + ">some text in color</div>"); writer.close(); } public static class Listener implements PortalNodeEventListener { public PortalNodeEvent onEvent(PortalNodeEventContext context, PortalNodeEvent event) { PortalNode node = event.getNode(); // Get node name String nodeName = node.getName(); // See if we need to create a new event or not WindowActionEvent newEvent = null; if (nodeName.equals("test1-window") && event instanceof WindowActionEvent) { // Find window B WindowActionEvent wae = (WindowActionEvent)event; PortalNode windowB = node.resolve("../test2-window"); if (windowB != null) { // We can redirect newEvent = new WindowActionEvent(windowB); newEvent.setParameters(wae.getParameters()); // Due to a bug those 2 following lines are required but have no meaning for now // See: http://jira.jboss.com/jira/browse/JBPORTAL-1604 newEvent.setMode(wae.getMode()); newEvent.setWindowState(WindowState.MAXIMIZED); // Redirect to the new event return newEvent; } } // Otherwise bubble up return context.dispatch(); } } }
PortletA.java
package test; import java.io.IOException; import java.io.PrintWriter; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.PortletSecurityException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; public class PortletA extends GenericPortlet { protected void doView(RenderRequest request, RenderResponse response) throws PortletException, PortletSecurityException, IOException { response.setContentType("text/html"); PrintWriter writer = response.getWriter(); writer.println("<form action=\"" + response.createRenderURL() + "\" method=\"post\">"); writer.println("<select name=\"color\">"); writer.println("<option>blue</option>"); writer.println("<option>red</option>"); writer.println("<option>black</option>"); writer.println("</select>"); writer.println("<input type=\"submit\"/>"); writer.println("</form>"); writer.close(); } }
my system:
Windows XP Pro SP2
Java 1.5.0_09
JBoss Portal 2.6 Bundle (binary)
PostgreSQL 8.3