Integration between portlets using JSR 168

I've developed 3 portlets but I want them talking with each other, in a way that is JSR 168 compliant.
For example, I have a search box portlet, where the user can only type search expressions, a search result portlet, where the user will see search results, and a search summary portlet, where the user will see statistics about search.
First question: how can I send data from one portlet to another? Is HttpSession a safe place to share data between portlets? Can I trust that all containers will create a single HttpSession per user?
Second question: how can one portlet force refresh of another, or even hide or show up another portlet?

Well it is a very smart question..
To be more precise i don't think it is been properly answered with
JSR 168 specification.
However,there few best practises followed in order to achieve it.
The idea of using HttpSession (PortletSession.getHttpSession() with Usage of AJAX) as you said it certainly one of the things which evryone would think.
http://www.ibm.com/developerworks/websphere/library/techarticles/0604_scott/0604_scott.html
http://www.doc.ic.ac.uk/~mo197/portlets/portlet_messaging/
http://wiki.java.net/bin/view/Portlet/JSR168FAQ(checkout the last part of the document)
http://www.michaelgilfix.com/techblog/2007/01/27/ajax-and-portlets
http://www.theserverside.com/news/thread.tss?thread_id=35385
http://blogs.jboss.com/blog/jviet/2005/07/14/The_recurring_interportlet_communication_dilemna.txt
http://portlets.blogspot.com/2005/07/inter-portlet-communication-library.html
http://docs.sun.com/app/docs/doc/819-5942/6n807tpc2?a=view
http://www.oracle.com/technology/products/ias/portal/pdf/oow06_S281756_jsr168ajax.pdf
http://docs.jboss.org/jbportal/v2.2/reference-guide/en/html/ipc.html#d0e1308
However,SUN is trying to revise it in their next specification JSR 286.
http://jcp.org/en/jsr/detail?id=286,
http://blogs.sun.com/nav/entry/understanding_portlet_2_0_jsr1,
http://apachecon.com/2006/US/presentations/FR8/FR8-JSR-286-updated.pdf
Second Question:how can one portlet force refresh >of another, or even hide or show up another portlet?As discussed earlier Usage of AJAX / (And storing Common Credentials in a Bean which scoped to HttpSession) in the dependent portlet would be quite handy in the above discussed case.
Hope this might help :)
REGARDS,
RaHuL

Similar Messages

  • We can use JSR-168 JPS portlet upload file,

    We can use JSR-168 JPS portlet upload file,
    here is the source for you referrence:
    upload file can use JSR168 portlet,
    1,CustomizablePortlet.java File
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ResourceBundle;
    import javax.portlet.*;
    import oracle.webdb.utils.SimpleStringBuffer;
    public class CustomizablePortlet extends GenericPortlet {
    private static final String TITLE_KEY = "title";
    protected static final String OK_ACTION = "ok_action";
    protected static final String APPLY_ACTION = "apply_action";
    protected static final PortletMode PREVIEW_MODE = new PortletMode("preview");
    protected static final PortletMode EDIT_DEFAULTS_MODE = new PortletMode("EDIT_DEFAULTS");
    protected static final PortletMode ABOUT_MODE = new PortletMode("ABOUT");
    public CustomizablePortlet() {
    public String getTitle(RenderRequest request) {
    return request.getPreferences().getValue("title", getPortletConfig().getResourceBundle(request.getLocale()).getString("javax.portlet.title"));
    public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print("<FORM ACTION=\"");
    out.print(getEditFormSubmitURL(request, response));
    out.println("\" METHOD=\"POST\">");
    out.println("<TABLE BORDER=\"0\">");
    out.println("<TR>");
    out.println("<TD WIDTH=\"20%\">");
    out.println("<P CLASS=\"portlet-form-field\" ALIGN=\"RIGHT\">Title:");
    out.println("</TD>");
    out.println("<TD WIDTH=\"80%\">");
    out.print("<INPUT CLASS=\"portlet-form-input-field\" TYPE=\"TEXT\" NAME=\"");
    out.print("title");
    out.print("\" VALUE=\"");
    out.print(getTitle(request));
    out.println("\" SIZE=\"20\">");
    out.println("</TD>");
    out.println("</TR>");
    out.println("<TR>");
    out.println("<TD COLSPAN=\"2\" ALIGN=\"CENTER\">");
    out.print("<INPUT CLASS=\"portlet-form-button\" TYPE=\"SUBMIT\" NAME=\"");
    out.print("ok_action");
    out.print("\" VALUE=\"OK\">");
    out.print("<INPUT CLASS=\"portlet-form-button\" TYPE=\"SUBMIT\" NAME=\"");
    out.print("apply_action");
    out.print("\" VALUE=\"Apply\">");
    out.println("</TD>");
    out.println("</TR>");
    out.println("</TABLE>");
    out.println("</FORM>");
    protected String getEditFormSubmitURL(RenderRequest request, RenderResponse response) {
    return response.createActionURL().toString();
    public void doHelp(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print("Help for <i><b>");
    out.print(getTitle(request));
    out.println("</b></i>.");
    public void doAbout(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    String aboutHTML = (new SimpleStringBuffer(30)).append("/about_").append(getPortletName()).append(".html").toString();
    PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(aboutHTML);
    response.setContentType("text/html");
    if(rd != null) {
    rd.include(request, response);
    } else {
    PrintWriter out = response.getWriter();
    out.print("<p class=\"portlet-font\">This is the about page for ");
    out.print(getTitle(request));
    out.print(".</p><p class=\"portlet-font\">");
    out.print("To customize the contents of this page, create a file named '");
    out.print(aboutHTML.substring(1));
    out.print("' in the Portlet web application's root directory containing HTML ");
    out.print("to appear here. ");
    out.print("Alternatively, override the <code>CustomizablePortlet</code> ");
    out.println("class's <code>doAbout()</code> method.</p>");
    public void doDispatch(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    WindowState state = request.getWindowState();
    if(!state.equals(WindowState.MINIMIZED)) {
    PortletMode mode = request.getPortletMode();
    if(mode.equals(PREVIEW_MODE))
    doView(request, response);
    else
    if(mode.equals(EDIT_DEFAULTS_MODE))
    doEdit(request, response);
    else
    if(mode.equals(ABOUT_MODE))
    doAbout(request, response);
    else
    super.doDispatch(request, response);
    } else {
    super.doDispatch(request, response);
    public void processAction(ActionRequest request, ActionResponse actionResponse) throws PortletException, IOException {
    String newTitle = request.getParameter("title");
    PortletPreferences prefs = request.getPreferences();
    prefs.setValue("title", newTitle);
    prefs.store();
    if(request.getParameter("ok_action") != null) {
    actionResponse.setPortletMode(PortletMode.VIEW);
    actionResponse.setWindowState(WindowState.NORMAL);
    2,FileUploadPortlet.java file
    import java.io.*;
    import javax.activation.DataHandler;
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeBodyPart;
    import javax.portlet.*;
    import oracle.portal.portlet.sample.CustomizablePortlet;
    public class FileUploadPortlet extends CustomizablePortlet
    private static final String FILE_PARAM = "file";
    private static final String SUBMIT_PARAM = "submit";
    private static final String DEFAULT_CHARSET = "ISO-8859-1";
    private static final String uploadRoot = "";
    public FileUploadPortlet()
    public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print("<form action=\"");
    out.print(response.createActionURL().toString());
    out.println("\" enctype=\"multipart/form-data\" method=\"post\">");
    out.println("<center><table border=\"0\">");
    out.println("<tr>");
    out.print("<td class=\"portlet-form-field\" align=\"right\">");
    out.print("Please browse to an HTML file:");
    out.println("</td>");
    out.print("<td>");
    out.print("<input class=\"portlet-form-input-field\" type=\"file\" name=\"");
    out.print("file");
    out.print("\">");
    out.println("</td>");
    out.println("</tr>");
    out.println("<tr>");
    out.println("<td colspan=\"2\" align=\"center\">");
    out.print("<input type=\"submit\" class=\"portlet-form-button\" name=\"");
    out.print("submit");
    out.print("\" value=\"Display\">");
    out.println("</td>");
    out.println("</tr>");
    out.println("</table>");
    out.println("</form>");
    String lastFile = request.getPreferences().getValue("file", null);
    if(lastFile != null) {
    out.println("<hr width=\"100%\"><br>");
    out.print(lastFile);
    public void processAction(ActionRequest request, ActionResponse actionResponse) throws PortletException, IOException {
    FormDataParser parsedRequest = new FormDataParser(request);
    MimeBodyPart mbp = parsedRequest.getMimeBodyPart("file");
    if(mbp == null)
    super.processAction(request, actionResponse);
    else
    try {
    String fileName= mbp.getFileName();
    int splash = fileName.lastIndexOf("\\");
    if(splash != -1)
    fileName = fileName.substring(splash +1, fileName.length()).trim();
    String contentType = mbp.getContentType();
    String charSet = getCharsetFromContentType(contentType);
    int sepIndex = contentType.indexOf(';');
    if(sepIndex != -1)
    contentType = contentType.substring(0, sepIndex).trim();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    mbp.getDataHandler().writeTo(bos);
    bos.close();
    String content = new String(bos.toByteArray(), charSet);
    FileOutputStream fos = new FileOutputStream(fileName);
    fos.write(bos.toByteArray());
    fos.close();
    PortletPreferences prefs = request.getPreferences();
    prefs.setValue("file", fileName + "upload ok");
    prefs.store();
    catch(MessagingException me) {
    throw new PortletException(me);
    public static String getCharsetFromContentType(String contentType) {
    int lastPos;
    if((lastPos = contentType.indexOf(';')) == -1)
    return "ISO-8859-1";
    lastPos++;
    String lowerContentType = contentType.toLowerCase();
    int nextPos;
    do {
    nextPos = lowerContentType.indexOf(';', lastPos);
    String param;
    if(nextPos == -1)
    param = lowerContentType.substring(lastPos).trim();
    else
    param = lowerContentType.substring(lastPos, nextPos).trim();
    if(param.startsWith("charset=") && param.length() > 8)
    return param.substring(8);
    lastPos = nextPos + 1;
    } while(nextPos != -1);
    return "ISO-8859-1";
    3,FormDataParser.java file
    import java.io.*;
    import java.util.*;
    import javax.activation.DataSource;
    import javax.mail.MessagingException;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMultipart;
    import javax.portlet.ActionRequest;
    import javax.portlet.PortletException;
    public class FormDataParser {
    private static final String MULTIPART_PREFIX = "multipart/";
    private static final String MULTIPART_FORM_DATA = "multipart/form-data";
    private static final String PLAIN_TEXT = "text/plain";
    private ActionRequest mWrappedRequest;
    private Map mParams;
    private Map mBodyParts;
    private boolean mIsInitialized;
    private boolean mHasMultipart;
    public FormDataParser(ActionRequest request) {
    mWrappedRequest = request;
    public String getParameter(String name) throws PortletException {
    String value = mWrappedRequest.getParameter(name);
    if(value != null)
    return value;
    initParameters();
    if(!mHasMultipart)
    return null;
    List paramList = (List)mParams.get(name);
    if(paramList != null)
    return (String)paramList.get(0);
    else
    return null;
    public String[] getParameterValues(String name) throws PortletException {
    String values[] = mWrappedRequest.getParameterValues(name);
    if(!mHasMultipart)
    return values;
    initParameters();
    List valueList = (List)mParams.get(name);
    if(valueList == null)
    return values;
    int size = valueList.size();
    if(values != null) {
    List newValueList = new ArrayList(values.length + size);
    newValueList.addAll(Arrays.asList(values));
    newValueList.addAll(valueList);
    valueList = newValueList;
    values = new String[size];
    valueList.toArray(values);
    return values;
    public MimeBodyPart getMimeBodyPart(String name) throws PortletException {
    initParameters();
    if(!mHasMultipart) {
    return null;
    } else {
    List parts = (List)mBodyParts.get(name);
    return parts != null ? (MimeBodyPart)parts.get(0) : null;
    public MimeBodyPart[] getMimeBodyParts(String name) throws PortletException {
    initParameters();
    if(!mHasMultipart)
    return null;
    List parts = (List)mBodyParts.get(name);
    if(parts == null) {
    return null;
    } else {
    MimeBodyPart mimeBodyParts[] = new MimeBodyPart[parts.size()];
    parts.toArray(mimeBodyParts);
    return mimeBodyParts;
    private void initParameters() throws PortletException {
    if(mIsInitialized)
    return;
    String contentType = mWrappedRequest.getContentType();
    if(contentType == null) {
    mIsInitialized = true;
    return;
    int sepIndex = contentType.indexOf(';');
    if(sepIndex != -1)
    contentType = contentType.substring(0, sepIndex).trim();
    if(contentType.equalsIgnoreCase("multipart/form-data")) {
    mParams = new HashMap(20);
    mBodyParts = new HashMap(20);
    DataSource ds = new DataSource() {
    public InputStream getInputStream() throws IOException {
    return mWrappedRequest.getPortletInputStream();
    public OutputStream getOutputStream() throws IOException {
    throw new IOException("OutputStream not available");
    public String getContentType() {
    return mWrappedRequest.getContentType();
    public String getName() {
    return getClass().getName();
    try {
    MimeMultipart multipartMessage = new MimeMultipart(ds);
    parseMultiPart(multipartMessage, null);
    catch(MessagingException me) {
    throw new PortletException(me);
    catch(IOException ioe) {
    throw new PortletException(ioe);
    mHasMultipart = true;
    mIsInitialized = true;
    private void parseMultiPart(MimeMultipart multipartMessage, String parentFieldName) throws MessagingException, IOException {
    int partCount = multipartMessage.getCount();
    for(int i = 0; i < partCount; i++) {
    javax.mail.BodyPart part = multipartMessage.getBodyPart(i);
    if(part instanceof MimeBodyPart) {
    MimeBodyPart mimePart = (MimeBodyPart)part;
    String disps[] = mimePart.getHeader("Content-Disposition");
    if(disps != null && disps.length != 0) {
    String disp = disps[0];
    String lcDisp = disp.toLowerCase();
    int nameStart;
    int nameEnd;
    if((nameStart = lcDisp.indexOf("name=\"")) != -1 && (nameEnd = lcDisp.indexOf("\"", nameStart + 6)) != -1)
    parentFieldName = disp.substring(nameStart + 6, nameEnd);
    if(parentFieldName != null)
    if(mimePart.getContentType().toLowerCase().startsWith("multipart/")) {
    Object content = mimePart.getContent();
    if(content instanceof MimeMultipart)
    parseMultiPart((MimeMultipart)content, parentFieldName);
    } else
    if((nameStart = lcDisp.indexOf("filename=\"")) != -1 && (nameEnd = lcDisp.indexOf("\"", nameStart + 10)) != -1) {
    List values = (List)mBodyParts.get(parentFieldName);
    if(values == null) {
    values = new ArrayList(1);
    mBodyParts.put(parentFieldName, values);
    values.add(mimePart);
    } else
    if(mimePart.getContentType().toLowerCase().startsWith("text/plain")) {
    Object content = mimePart.getContent();
    if(content instanceof String) {
    List values = (List)mParams.get(parentFieldName);
    if(values == null) {
    values = new ArrayList(1);
    mParams.put(parentFieldName, values);
    values.add((String)content);
    4.web.xml file
    <?xml version = '1.0' encoding = 'ISO-8859-1'?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <display-name>hanhuiwen OracleSamplePortlets</display-name>
    <description>hanhuiwen Oracle Sample Portlet Application</description>
    <servlet>
    <servlet-name>portletdeploy</servlet-name>
    <servlet-class>oracle.webdb.wsrp.server.deploy.PortletDeployServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>portletjaxrpc</servlet-name>
    <servlet-class>com.sun.xml.rpc.server.http.JAXRPCServlet</servlet-class>
    <init-param>
    <param-name>configuration.file</param-name>
    <param-value>/WEB-INF/WSRPService_Config.properties</param-value>
    </init-param>
    </servlet>
    <servlet>
    <servlet-name>portletresource</servlet-name>
    <servlet-class>oracle.webdb.wsrp.server.ResourceServlet</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>ChartServlet</servlet-name>
    <display-name>Chart Servlet</display-name>
    <description>Demo image-generating servlet</description>
    <servlet-class>oracle.portal.portlet.sample.chart.ChartServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
    <servlet-name>uix</servlet-name>
    <servlet-class>oracle.cabo.servlet.UIXServlet</servlet-class>
    <init-param>
    <param-name>oracle.cabo.servlet.pageBroker</param-name>
    <param-value>oracle.cabo.servlet.xml.UIXPageBroker</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>ChartServlet</servlet-name>
    <url-pattern>/chart*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>portletjaxrpc</servlet-name>
    <url-pattern>/portlets*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>portletresource</servlet-name>
    <url-pattern>/portletresource*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>uix</servlet-name>
    <url-pattern>*.uix</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>uix</servlet-name>
    <url-pattern>/uix/*</url-pattern>
    </servlet-mapping>
    <session-config>
    <session-timeout>60</session-timeout>
    </session-config>
    <welcome-file-list>
    <welcome-file>index.uix</welcome-file>
    </welcome-file-list>
    <!--
    LogLevel controls the amount of information logged. There are 7 log levels:
    0 - logging disabled
    1 - configuration
    2 - severe error
    3 - warning
    4 - throwing exception
    5 - performance
    6 - information
    7 - debug
    The oracle.portal.log.Logger interface defines methods that map to these 7
    log levels. However, there are also 2 methods that do not map to log
    levels. These methods are included for backwards compatibility and data
    logged using these methods will always be logged regardless of the log level.
    -->
    <env-entry>
    <env-entry-name>oracle/portal/log/logLevel</env-entry-name>
    <env-entry-type>java.lang.Integer</env-entry-type>
    <env-entry-value>7</env-entry-value>
    </env-entry>
    </web-app>
    5.portlet.xml
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <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">A portlet that demonstrates the file upload features of the Java Portlet Specification.</description>
    <portlet-name>FileUpload</portlet-name>
    <portlet-class>FileUploadPortlet</portlet-class>
    <expiration-cache>0</expiration-cache>
    <supports>
    <mime-type>text/html</mime-type>
    <portlet-mode>help</portlet-mode>
    <portlet-mode>about</portlet-mode>
    <portlet-mode>edit_defaults</portlet-mode>
    </supports>
    <supported-locale>en</supported-locale>
    <portlet-info>
    <title>File Upload Portlet</title>
    <short-title>File Upload</short-title>
    <keywords>File,Upload, Portlet</keywords>
    </portlet-info>
    </portlet>
    <custom-portlet-mode>
    <description xml:lang="en">This mode should be used by the portlet to display information on the portlet's purpose, origin, version, etc.</description>
    <portlet-mode>about</portlet-mode>
    </custom-portlet-mode>
    <custom-portlet-mode>
    <description xml:lang="en">This mode signifies that the portlet should render a screen to set the default values for the modifiable preferences that are typically changed in the EDIT screen. Calling this mode requires that the user must have administrator rights.</description>
    <portlet-mode>edit_defaults</portlet-mode>
    </custom-portlet-mode>
    <custom-portlet-mode>
    <description xml:lang="en">This mode should be used by the portlet to render output without the need of having back-end connections or user specific data available.</description>
    <portlet-mode>preview</portlet-mode>
    </custom-portlet-mode>
    <user-attribute>
    <name>user.name.given</name>
    </user-attribute>
    <user-attribute>
    <name>user.name.family</name>
    </user-attribute>
    <user-attribute>
    <name>user.name.middle</name>
    </user-attribute>
    <user-attribute>
    <name>user.name.nickname</name>
    </user-attribute>
    <user-attribute>
    <name>user.bdate</name>
    </user-attribute>
    <user-attribute>
    <name>user.business-info.online.email</name>
    </user-attribute>
    </portlet-app>

    Hello i had exactly the same error, but not with file upload.
    I'm sure you have in your application lib directory to jars which aren't compatible to each other.
    And the problem occured between my myfaces and tomahawk jars .
    See this page:
    http://wiki.apache.org/myfaces/CompatibilityMatrix
    It tells you which myfaces and tomahawk jars you can use together.
    Hope it can help.
    bye

  • Online chat, Aug. 12, n the Portlet Specification (JSR 168)

    The Portlet Specification, JSR 168 ( http://jcp.org/en/jsr/detail?id=168 ), establishes a standard API for creating portlets. It's designed to ensure interoperability between portlets and Java-based portal servers or other Web applications that implement the specification. Learn more about the Portlet Specification, and get questions answered in this chat with Portlet Specification co-lead Alejandro Abdelnur, and Sun ONE Portal Server product manager Adam Abramski. The chat is scheduled for Tuesday, August 12, at 11 A.M.-to-noon Pacific Daylight Time (6:00 P.M.-to-7 P.M. GMT).
    To join the chat on August 12, go to http://developer.java.sun.com/developer/community/chat/index.html and click on "Join the current session".

    The transcript of this chat is now available at http://developer.java.sun.com/developer/community/chat/JavaLive/2003/jl0812.html

  • Online Chat, Aug. 12, on the Portlet Specification (JSR 168)

    The Portlet Specification, JSR 168 ( http://jcp.org/en/jsr/detail?id=168 ), establishes a standard API for creating portlets. It's designed to ensure interoperability between portlets and Java-based portal servers or other Web applications that implement the specification. Learn more about the Portlet Specification, and get questions answered in this chat with Portlet Specification co-lead Alejandro Abdelnur, and Sun ONE Portal Server product manager Adam Abramski. The chat is scheduled for Tuesday, August 12, at 11 A.M.-to-noon Pacific Daylight Time (6:00 P.M.-to-7 P.M. GMT).
    To join the chat on August 12, go to http://developer.java.sun.com/developer/community/chat/index.html and click on "Join the current session".

    The transcript for the chat is now available at http://developer.java.sun.com/developer/community/chat/JavaLive/2003/jl0812.html

  • Interportlet communication using JSR 168

    Hi All
    We are using JSR 168 portlets . My requirement is invoke the method of Portlet B on some event of Portlet A.
    I need help on the implementation of Interportlet communication using JSR 168
    Thanks

    Hi,
    Go through the below two discussions
    Interportlet communication using JSR 168
    Re: JSR 168 Portlets -- IPC with Custom Events
    Thanks,
    Venkat Sarvabatla

  • Portlet API:  JSR 168 / 286  vs Vendor Extensions

    Currently evaluating Websphere 5.1 vs WebLogic 8.1 Portal software.
    It seems like both IBM and BEA push you towards using their Portal extensions as "value add" features. I am really interested in sticking to JSR 168 for portability.
    Does anyone have any experience with these tools developing JSR 168? I would appreciate your observations about using the vendor extensions vs JSR 168 support in these tools. Please add any comments on other portal software you have had success with.
    Any idea when will JSR 286 come out with final spec?
    Message was edited by:
    java@finance

    sorry.Correction.I am using Oracle portal 10.1.4 .
    -Vid-

  • Java Portlets only JSR 168 compatible Portlet in Weblogic Portal 9.x?

    I and need to develop a JSR 168 Portlet that contains JSF components. I have looked through a lot of the training material, newsgroups and web sites for any information on how to perform this within the Weblogic Portal tools and have been unsuccessful.
    Is there a way in Weblogic Portal 9.x to create a Portlet that is JSR 168 compliant and capable of containing JSF components through the tool interface?

    I and need to develop a JSR 168 Portlet that contains JSF components. I have looked through a lot of the training material, newsgroups and web sites for any information on how to perform this within the Weblogic Portal tools and have been unsuccessful.
    Is there a way in Weblogic Portal 9.x to create a Portlet that is JSR 168 compliant and capable of containing JSF components through the tool interface?

  • JSR 168 Under WebSphere?

    If we develop portlets using JSR 168/ WSRP for Plumtree using WebSphere Studio and WebSphere (rather than WebLogic), should they work?
    If there were problems that required a Plumtree fix, would such a fix be provided under normal support?
    Thanks.

    If we develop portlets using JSR 168/ WSRP for Plumtree using WebSphere Studio and WebSphere (rather than WebLogic), should they work?
    If there were problems that required a Plumtree fix, would such a fix be provided under normal support?
    Thanks.

  • What is the difference between JSR 168 portlets and WSRP portlets?

    What is the difference between JSR 168 portlets and WSRP portlets?

    Here is the difference between JSR168 and WSRP:
    The WSRP specification does not make any statements as to implemention. Java's portlet specification, JSR 168, and WSRP are not competing technologies. JSR 168 may be used to define a portlet, and WSRP may be used to define a portlet's operations to remote containers. JSR 168 portlets and WSRP may be used together to define a portlet and to provide remote operations. Similarly, .NET portlets may be created for use with WSRP. Interoperability between JSR 168 and .NET WSRP implementations has been demonstrated

  • Use JSF with Portlet JSR 168 Specification

    Hi
    I need to know.... is possible run JSF application with Portlet Specification JSR 168, using Pluto Portal and Apache Tomcat ???
    Best Regards
    Mauricio

    Hi,
    the Apache Jetspeed2 - Project has a bridge,
    that is designed to work with MyFaces.
    http://cvs.apache.org/viewcvs.cgi/jakarta-jetspeed-2/portals-bridges/myfaces/
    Hope it helps you.
    Regards,
    Matthias

  • Is it possiable to use "ALI SCRIPTING FRAMEWORK API " in JSR 168 Portlets?

    Hi,
    Is it possiable to use "ALI SCRIPTING FRAMEWORK API " in JSR 168 Portlets.
    With Regards
    Dheeraj Sai

    If you want to use (let say it's possible) "ALI SCRIPTING FRAMEWORK API" in JSR 168 then these porlets are not "JSR-168" compatible anymore. So you automatically lost the main benefit of JSR-168 portlet - works over different portal vendors.
    I guess if you have decided use JSR-168 you did this for reasons. Then stay this way and don't use any proprietary technologies.
    By the way, this topic may help:
    http://forums.bea.com/bea/message.jspa?messageID=500025455&tstart=0
    Edited by Bryazgin at 05/18/2007 6:36 AM

  • Remote Inter Portlet Communication for JSR 168

    Hi All,
    We are stuck in a big problem using JSR 168 as remote portlets. We will be relieved if someone can suggest few ideas on this. I will provide the scenario which we are trying now.
    We have two portlets namely portlet A and portlet B which are Java(JSR 168) type portlets. These two portlets are offered as remote and they reside in the producer application. We have consumed these two portlets in our consumer application.
    The portlet A is triggering an event and portlet B is listening to the event triggered by portlet A. Currently we are trying to implement this functionality using Ajax. We tried to use customEventUrl tag in our jsp belonging to portlet A and we finally figured out that customEventUrl will not work in Remote portlets. We are not sure as how to pass the information from remote portlet A to remote portlet B. Please let us know your thoughts about this as whether the implementation is really possible when using Remote portlets.
    IMPORTANT NOTE: The event handling and the configuration code that we have made in the above scenario is working perfectly for non-remote java portlets. The problem is occurring only when we consume them in the consumer application.
    Thanks
    Vijay

    Hello Ashwin,
    What version of WebLogic Portal are you using? And is this the same for both the consumer and producer?
    If you are using WLP 10.3.2 I would highly recommend using JSR286 portlets (the next version of the Java Portlet (JSR168) specification) and the JSR286-standard eventing. The JSR286 eventing model is actually much cleaner and easier to understand than the WLP-proprietary support for events in JSR168 portlets.
    However, if you are using a version of WLP prior to 10.3.2 and can't upgrade, JSR168-style events are your only choice. I can give you examples, but they all look very similar to the examples in the online documentation.
    When events work between portlets locally, but not over WSRP, the usual problems are:
    - There is one or more of "onlyIfDisplayed", "sourceDefinitionLabels" or "sourceInstanceLabels" attributes declared on the handle*Event element in the .portlet file. These attributes restrict when the portlet should receive an event, and they usually don't work the way you think when running over WSRP. It is best to not use these attributes for portlets which are going to be used over WSRP.
    - A payload is being sent with the event which is not actually serializable. If serialization of the event payload (which is required for versions of WLP prior to 10.3.2 for WSRP) fails, the event will not be delivered to the portlet.
    - The producer may be configured to not accept events. Check your producer's WEB-INF/wsrp-producer-config.xml file; the "service-config" element should either not have an "offer-extensions" attribute, or this attribute's value should be "true".
    - The events may be getting sent during a portlet lifecycle other than processAction or handleEvent. There is no way for WSRP to handle events which have been sent during preRender or render, so it simply doesn't work.
    - In the case of JSR168 portlets, if you have a backing file on the portlet (in addition to the portlet implementation as well), that may not work in some circumstances over WSRP. It is best to have the event handlers be in the portlet implementation class and avoid the use of backing files for JSR168 portlets.
    If none of those things help you, my suggestion would be to post a sample .portlet file for one of the portlets that is supposed to be receiving the event, as well as the method signature in that portlet's implementation class that is supposed to be receiving the event, and the code which is sending the event that is supposed to be received.
    Kevin

  • Java Portlet (JSR 168) development with Portal

    Hello,
    We have been trying to dive back into Portal development lately. The release of 9.0.4 with support for standards-based portlets has convinced us to begin looking at 9iAS Portal as a practical portal product. We have a development environment setup with a workin 9.0.4 portal.
    Digging through the available docs on the portal studio site, I have come across a couple documents alluding to the installation of a portlet-container. Now, I have already downloaded the JSR 168 framework files. It seems that a good portion of this 'portlet container' consists of these files.
    The problem is that the documentation that is available is nothing more than a step by step set of instructions for setting up an OC4J instance with this 'portlet container', configuring an Oracle database for portlet customizations, and deploying a sample ear into the OC4J instance.
    This does nothing for me.
    What I want is documentation that indicates the requirements necessary to make a JSR-168 compliant portlet (even a 'hello world') exposed through portal with the least amount of effort, and with no references to proprietary tools. I would like to see instructions that are tailored towards a generic J2EE provider, not an OC4J one. I already have a very functional set of tools that should be able to accomodate a JSR-168 producer. We have had many problems with OC4J leading us to try to avoid it at all costs.
    Any ideas?
    Thanks!
    -Sean

    Hello
    I am probably not clear.
    In the OracleAS Portal architecture Java portlet are remote from the portal middle tier.
    In the non standard world (JPDK Portlet), the Portal Middlet tier use SOAP over HTTP to call the portlets.
    In the Standard world (JSR-168), the Portal Middle Tier will use WSRP (Web Service Remote Portlet) to call the portlets. When you use the Oracle JSR-168 container inside OC4J, these portlets are automatically accessible over remotely using WSRP.
    So, as you can see the Portal Middle Tier needs to support WSRP to be able to use JSR-168 portlet. And OracleAS 10g 904 does not currently support WSRP registration. It is why we have the "OracleAS Portal Verification Service for WSRP", to allow you to test your portlet.
    To be able to use JSR-168 (with WSRP) portlet on you internal Portal you'll have to install the OracleAS Portal Standard Developer Preview that will be available soon.
    Hope that clarify my previous statements.
    Regards
    Tugdual Grall

  • JSR 168 Portlets with JSF Content

    Is there any news on the possibility of achieving this.
    Should I go ahead and do it myself using MyFaces and the Apache Portals JSF Bridge?  (or try and leverage the WebSphere JSF tooling using the Apache Portals JSF Bridge)?   Or use the Sun JSF-Portlet Bridge?
    Thanks,
    Don

    Don,There is a JSR-168 / JSF portlet bridge that I tested on our portal a few months ago that worked pretty well. It required a lot of changes to the faces-config.xml file and the addition of a bridge jar. I think it also had some drawbacks in regards to the use of sub-views in a JSF page.If you are not tied to using JSR-168, a better solution might be the new JSF filter, which is similar to what we do with .NET Web controls. It allows JSF applications to run as portlets and refreshes the portlet using in-place-refresh (AJAX). This filter is simple to set up, well documented, and can be found at: http://portal.plumtree.com/portal/server.pt?space=CommunityPage&cached=true&parentname=CommunityPage&parentid=0&in_hi_userid=63776&control=SetCommunity&CommunityID=2758&PageID=5913under the name "Java Portlet Tools".Let me know which solution you are interested in. The JSF / JSR-168 bridge is available from Sun as development source code but you will probably want to use some of the helper classes that I wrote for it. These classes are not publically available, but I can send you a jar if that's what you need.Andy
    ------- Don Brady wrote on 6/2/05 9:11 AM -------Is there any news on the possibility of achieving this.Should I go ahead and do it myself using MyFaces and the Apache Portals JSF Bridge? (or try and leverage the WebSphere JSF tooling using the Apache Portals JSF Bridge)? Or use the Sun JSF-Portlet Bridge?Thanks,Don

  • JSR 168 portlets

    Hi,
    Once again I find myself struggling to keep on top of the bleeding edge of Portal technology - I remember developing PL/SQL portlets in WebDB 3.0 Beta when there was no documentation not too many years ago!
    I am working with a client that wants to make some "legacy" PL/SQL portlet applications portable to SAP Portal. SAP NetWeaver support for JSR 168 is planned in the near future, and the client wants to be able to publish the portlets there. The existing applications are deployed in Oracle Portal and consist of 30 PL/SQL, along with a few bits of custom java / servlet functionality for file upload and download. Some of these portlets have very complex functionality both clientside (javascript) and serverside (SQL).
    Am I correct in assuming that these will have to be redeveloped as JSR 168-compliant JSP portlets...?
    From what I can gather there shouldn't be too many restrictions, but I was wondering if anyone else has gone through or is going through this kind of process and/or has any tips or suggestions?
    Thanks for your assistance,
    Mark Austin

    Hi,
    Yes. You should convert these portlets to jsr 168 portlets. But there is no tool available in Oracle Portal to convert these portlets to jsr 168 portlets.
    Thanks,
    Sharmila

Maybe you are looking for

  • There is a delay when I hit the spacebar, and it only happens in Firefox. Is there a way to fix this?

    When I type anything in Firefox like an e-mail, spaces do not register immediately when I hit the spacebar, and it slows down my typing tremendously. I just installed Firefox today, and I had never had this problem before. I tested it in both my word

  • How do I get my bookmarks back after updating to Windows 7?

    I updated to Windows 7 on a new hard drive. I backed up my C:\ drive to a Seagate external hard drive first. After installing Windows & all my programs. I restored the data from my Seagate drive, but I don't have any bookmarks from Firefox. I had ove

  • Error 7 occurred when generating the data transfer program

    Hello All , In Master Data Load Process Chain ,  we get error like 1. System Response     Caller 09 contains an error message. Diagnosis Error 7 occurred when generating the data transfer program for the requested InfoSource. System Response The data

  • Replaced HDD, still not working

    Hi. Our MacBook stopped working for no reason. It wouldn't boot up, and just the flashing folder with a question mark appeared. After some searching it seemed like this is a common problem and most likely the HDD had failed. MacBook is 14 months old.

  • Importing images from iPhoto to LightRoom 2

    Hello Community! Would there be any difference in importing images from the latest iPhoto into the older version of LR2, then when I upgrade to the latest LR would there be any issues with those (iPhoto) images imported into LR2 into the newer LR? Ju