I copy and past sources here so I eventually can delete file on my site.
Example valid for JBoss 2.2.x
For put 2 portlets in 1 page we need:
- portlet.xml
- simpleportlet-object.xml (*-object.xml where * is the name of your portal application)
\ <-- Our Portal Root folder
|
|--\WEB-INF
|
|-- jboss-web.xml
|-- jboss-app.xml
|-- web.xml
|-- portal.xml
|-- simpleportlet-object.xml
|
|--\lib <-- this is the folder where to put libreries
|--\classes <-- this is the folder where put copiled java classes
|
|--\com <-- this is the folder for the package
|
|--\portalbook <-- this is the folder for the package
|
|--\crawler <-- this is the folder for the package
|
|--Class1.class
|--SimplePortlet.class
jboss-web.xml:
<?xml version="1.0"?>
<jboss-web>
</jboss-web>
jboss-app.xml:
<jboss-app>
<app-name>simpleportlet</app-name>
</jboss-app
portlet.xml:
<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
<portlet>
<description xml:lang="en">PortletBook Simple Portlet</description>
<description xml:lang="it">LibroPortlet Portlet Semplice</description>
<portlet-name>SimplePortlet</portlet-name>
<portlet-class>com.portalbook.crawler.SimplePortlet</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
<portlet-mode>HELP</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>Simple Portlet</title>
<short-title>Simple</short-title>
<keywords>Simple, Example</keywords>
</portlet-info>
</portlet>
<portlet>
<description xml:lang="en">Only Hello World</description>
<description xml:lang="it">Solo Hello World</description>
<portlet-name>TestHelloWorldPortlet</portlet-name>
<portlet-class>com.portalbook.crawler.Class1</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<portlet-info>
<title>Test Hello World</title>
<short-title>THW</short-title>
<keywords>test, hello, world</keywords>
</portlet-info>
</portlet>
</portlet-app>
simpleportlet-object.xml:
<?xml version="1.0" encoding="UTF-8"?>
<deployments>
<deployment>
<if-exists>overwrite</if-exists>
<parent-ref>default</parent-ref>
<page>
<page-name>SimplePortlet</page-name>
<properties/>
<window>
<window-name>SimplePortletWindow</window-name>
<instance-ref>SimplePortletInstance</instance-ref>
<region>left</region>
<height>0</height>
</window>
<window>
<window-name>TestHelloWorldPortletWindow</window-name>
<instance-ref>TestHelloWorldPortletInstance</instance-ref>
<region>center</region>
<height>0</height>
</window>
</page>
</deployment>
<deployment>
<if-exists>overwrite</if-exists>
<instance>
<instance-name>SimplePortletInstance</instance-name>
<component-ref>simpleportlet.SimplePortlet</component-ref>
</instance>
</deployment>
<deployment>
<if-exists>overwrite</if-exists>
<instance>
<instance-name>TestHelloWorldPortletInstance</instance-name>
<component-ref>simpleportlet.TestHelloWorldPortlet</component-ref>
</instance>
</deployment>
</deployments>
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Class1.java source:
package com.portalbook.crawler;
import java.io.IOException;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
public class Class1 extends GenericPortlet {
public static void Class1(){
}
protected void doView(RenderRequest request, RenderResponse response) throws
PortletException, IOException {
response.setContentType("text/html");
response.getWriter().println("Hello Portlet");
}
}
SimplePortlet.java source:
package com.portalbook.crawler;
import java.io.*;
import javax.portlet.*;
public class SimplePortlet implements Portlet {
public SimplePortlet() {
}
public void destroy() {
portletCounter--;
}
public void init(PortletConfig config) throws PortletException {
portletCounter++;
}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException{
actionCounter++;
}
public void render(RenderRequest request,RenderResponse response)
throws PortletException, IOException{
renderCounter++;
response.setTitle("Simple Portlet");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.write("The server has instantiated " +
portletCounter +" copies of the portlet<br>");
out.write("This portlet has been rendered " +
renderCounter +" times (including this one)<br>");
out.write("This portlet has received " +
actionCounter +" action requests<br>");
PortletURL action = response.createActionURL();
out.write("Click <a href=\"");
out.write(action.toString());
out.write("\">here</a> to trigger an action.<br>");
}
private static int portletCounter = 0;
private int renderCounter = 0;
private int actionCounter = 0;
}