Java AppletやMacromedia Flashなど,Webブラウザにロードされるプラグインモジュールと連携するポートレットを作成する方法について説明します。
プラグインモジュールと連携するには,ポートレットのURLが必要です。また,セッションを維持して連携するには,セッションIDが必要です。OBJECTタグのパラメタを使用して,ポートレットのURLやセッションIDをプラグインモジュールに渡すと,プラグインモジュールと連携できます。
ここでは,Macromedia Flashと連携するサンプルを示します。Java Appletの場合は,PARAMタグを使用して,必要な情報を渡せます。それ以外のプラグインモジュールも同じ方法で連携できます。パラメタを引き渡す方法については,各プラグインモジュールのマニュアルを参照してください。
Macromedia Flashと連携するサンプルファイルの構成を次に示します。
{PROJECT_HOME}¥portlets¥flash¥index.xml
¥flash.jsp
¥sample.swf FLASHファイル
flash.jspを次に示します。
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletURI" %>
<%@ page import="jp.co.hitachi.soft.portal.portlet.PortletUtils" %>
<%
String nameSpace = PortletUtils.getNamespace(request, response);
String flashUrl = (String)session.getAttribute(namespace+"url");
if (Mode. == DEFAULT || Mode= MAXIMIZED) {
if (flashUrl == null) {
String me = PortletURI.transInlineURI(request, response, "");
String baseUrl = me.substring(0, me.lastIndexOf('/'));
session.setAttribute(nameSpace+"base", baseUrl);
Cookie cookies[] = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equalsIgnoreCase("jsessionid")) {
sessionID = cookies[i].getValue();
break;
}
}
flashUrl = PortletURI.transInlineURI(request, response,
new StringBuffer(64).append("sample.swf").append("?PortletURL=").append(baseUrl)
.append("&SessionID=").append(sessionID).toString());
session.setAttribute(nameSpace+"url", flashUrl);
}
}
%>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=4,0,2,0"
ID="sample" WIDTH="100" HEIGHT="100">
<param name="movie" value="<%= flushUrl %>">
</OBJECT>