Modified: portals/site-live/applications/webcontent2/war-module.html URL: http://svn.apache.org/viewvc/portals/site-live/applications/webcontent2/war-module.html?rev=1901430&r1=1901429&r2=1901430&view=diff ============================================================================== --- portals/site-live/applications/webcontent2/war-module.html (original) +++ portals/site-live/applications/webcontent2/war-module.html Tue May 31 02:23:06 2022 @@ -1,677 +1,888 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - - - - - - - - - +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<!-- Generated by Apache Maven Doxia Site Renderer 1.4 at 26 May 2022 --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <title>Apache Portals Applications - + Apache Portals Web Content Application 2 - WAR Module</title> + <style type="text/css" media="all"> + @import url("../css/maven-base.css"); + @import url("../css/maven-theme.css"); + @import url("../css/site.css"); + </style> + <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" /> + <meta name="Date-Revision-yyyymmdd" content="20220526" /> + <meta http-equiv="Content-Language" content="en" /> + + </head> + <body class="composite"> + <div id="banner"> + <a href="http://portals.apache.org/" id="bannerLeft"> + <img src="../images/apache-portals.gif" alt="Apache Software Foundation" /> + </a> + <a href="http://portals.apache.org/applications/" id="bannerRight"> + Apache Portals Applications + </a> + <div class="clear"> + <hr/> + </div> + </div> + <div id="breadcrumbs"> + + + <div class="xleft"> + <span id="publishDate">Last Published: 26 May 2022</span> + | <span id="projectVersion">Version: 1.0</span> + </div> + <div class="xright"> <a href="http://portals.apache.org/" class="externalLink" target="_nw" title="Portals">Portals</a> + | + <a href="http://portals.apache.org/jetspeed-2" class="externalLink" target="_nw" title="Jetspeed-2">Jetspeed-2</a> + | + <a href="http://portals.apache.org/bridges" class="externalLink" target="_nw" title="Bridges">Bridges</a> + + + </div> + <div class="clear"> + <hr/> + </div> + </div> + <div id="leftColumn"> + <div id="navcolumn"> + + + <h5>Essentials</h5> + <ul> + <li class="none"> + <a href="../index.html" title="Welcome">Welcome</a> + </li> + <li class="none"> + <a href="../news.html" title="News and Status">News and Status</a> + </li> + <li class="none"> + <a href="../download.html" title="Download">Download</a> + </li> + <li class="none"> + <a href="../getting-started.html" title="Getting Started">Getting Started</a> + </li> + </ul> + <h5>Subprojects</h5> + <ul> + <li class="none"> + <a href=".././portals-gems/index.html" title="Gems">Gems</a> + </li> + <li class="none"> + <a href=".././demo/index.html" title="Demo">Demo</a> + </li> + <li class="none"> + <a href=".././rss-main/index.html" title="RSS">RSS</a> + </li> + <li class="expanded"> + <a href=".././webcontent2/index.html" title="WebContent-2">WebContent-2</a> + <ul> + <li class="none"> + <a href=".././webcontent2/modules-overview.html" title="Modules Overview">Modules Overview</a> + </li> + <li class="none"> + <a href=".././webcontent2/content-rewriter-module.html" title="Content Rewriter Module">Content Rewriter Module</a> + </li> + <li class="none"> + <a href=".././webcontent2/reverse-proxy-module.html" title="Reverse Proxy Module">Reverse Proxy Module</a> + </li> + <li class="none"> + <a href=".././webcontent2/portlets-module.html" title="Portlets Module">Portlets Module</a> + </li> + <li class="none"> + <a href=".././webcontent2/war-module.html" title="WAR Module">WAR Module</a> + </li> + <li class="none"> + <a href=".././webcontent2/build-from-source.html" title="Build from source">Build from source</a> + </li> + <li class="none"> + <a href=".././webcontent2/apidocs/index.html" title="JavaDocs">JavaDocs</a> + </li> + <li class="none"> + <a href=".././webcontent2/faq.html" title="FAQ">FAQ</a> + </li> + </ul> + </li> + <li class="none"> + <a href=".././webcontent/index.html" title="WebContent-1">WebContent-1</a> + </li> + <li class="none"> + <a href=".././dbbrowser/index.html" title="DB Browser">DB Browser</a> + </li> + <li class="none"> + <a href=".././logging/index.html" title="Logging">Logging</a> + </li> + </ul> + <h5>Support</h5> + <ul> + <li class="none"> + <a href="../team-list.html" title="Project Team">Project Team</a> + </li> + <li class="none"> + <a href="../license.html" title="Project License">Project License</a> + </li> + <li class="none"> + <a href="http://wiki.apache.org/portals/applications" class="externalLink" title="Project Wiki">Project Wiki</a> + </li> + <li class="none"> + <a href="../mail-lists.html" title="Mailing List">Mailing List</a> + </li> + <li class="none"> + <a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a> + </li> + </ul> + <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> + <img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /> + </a> + + + </div> + </div> + <div id="bodyColumn"> + <div id="contentBox"> + <!-- Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version + 2.0 (the "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 Unless required by + applicable law or agreed to in writing, software distributed under + the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES + OR CONDITIONS OF ANY KIND, either express or implied. See the + License for the specific language governing permissions and + limitations under the License. --> + + <div class="section"> +<h2>WAR Module<a name="WAR_Module"></a></h2> + +<p> + The Web Content Application 2 WAR Module packages all the other modules + with default servlet/filter/portlet configurations and demonstration-purpose examples. + </p> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> - <title>Apache Portals Applications - Apache Portals Web Content Application 2 - WAR Module</title> - <style type="text/css" media="all"> - @import url("../css/maven-base.css"); - @import url("../css/maven-theme.css"); - @import url("../css/site.css"); - </style> - <link rel="stylesheet" href="../css/print.css" type="text/css" media="print" /> - </head> - <body class="composite"> - <div id="banner"> - <a href="http://portals.apache.org/" id="bannerLeft"> - - <img src="../images/apache-portals.gif" alt="" /> - - </a> - <a href="http://portals.apache.org/applications/" id="bannerRight"> - - Apache Portals Applications - - </a> - <div class="clear"> - <hr/> + +<div class="section"> +<h3>Installtion<a name="Installtion"></a></h3> + +<p> + If you use <a class="externalLink" href="http://maven.apache.org/" target="_blank">Apache Maven</a> in your project, + then you can add the following dependency to use this module in your project. + </p> + +<p> + </p> +<div class="source"> +<pre> + <dependency> + <groupId>org.apache.portals.applications</groupId> + <artifactId>apa-webcontent2-war</artifactId> + <type>war</type> + <version>${webcontent2.version}</version> + </dependency> + </pre></div> + </div> + </div> - <div id="breadcrumbs"> - - - - - - - <div class="xleft"> - Last Published: 4 March 2015 - </div> - <div class="xright"> <a href="http://portals.apache.org/" class="externalLink">Portals</a> - | - <a href="http://portals.apache.org/jetspeed-2" class="externalLink">Jetspeed-2</a> - | - <a href="http://portals.apache.org/bridges" class="externalLink">Bridges</a> - - +<div class="section"> +<h2>Default Reverse Proxy Servlet/Filter Definition(s)<a name="Default_Reverse_Proxy_ServletFilter_Definitions"></a></h2> + +<p> + The Web Content Application 2 WAR Module contains a reverse proxy servlet definition + like the following in /WEB-INF/web.xml by default. + </p> - - - - - - </div> - <div class="clear"> - <hr/> - </div> + +<div class="source"> +<pre> + <!-- Default Reverse Proxy Servlet --> + <servlet> + <servlet-name>ReverseProxyServlet</servlet-name> + <servlet-class>org.apache.portals.applications.webcontent2.proxy.servlet.SimpleReverseProxyServlet</servlet-class> + <init-param> + <param-name>mappings</param-name> + <param-value> + /WEB-INF/rproxy-mappings.yaml + </param-value> + </init-param> + <init-param> + <param-name>ssl-hostname-verifier</param-name> + <param-value>ALLOW_ALL_HOSTNAME_VERIFIER</param-value> + </init-param> + </servlet> + + <!-- Map /rproxy path to the Default Reverse Proxy Servlet --> + <servlet-mapping> + <servlet-name>ReverseProxyServlet</servlet-name> + <url-pattern>/rproxy/*</url-pattern> + </servlet-mapping> + </pre></div> + + +<p> + The mapping configuration for the servlet is configured in <tt>/WEB-INF/rproxy-mappings.yaml</tt> by default: + </p> + +<div class="source"> +<pre> +--- !regex +localPattern: ^/localhost_(\d+)/(.*)$ +remoteReplace: http://localhost:$1/$2 +remotePattern: ^http://localhost:(\d+)/(.*)$ +localReplace: /localhost_$1/$2 +contentRewriters: + text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] + +--- !simple +local: /portals/applications/ +remote: http://portals.apache.org/applications/ +contentRewriters: + text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] + +--- !simple +local: /portals/bridges/ +remote: http://portals.apache.org/bridges/ +contentRewriters: + text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] + +--- !regex +localPattern: ^/apache/(\w+)/(.*)$ +remoteReplace: http://$1.apache.org/$2 +remotePattern: ^http://(\w+)\.apache\.org/(.*)$ +localReplace: /apache/$1/$2 +contentRewriters: + text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] + +--- !simple +local: / +remote: http://apache.org/ +contentRewriters: + text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] + </pre></div> </div> - <div id="leftColumn"> - <div id="navcolumn"> - - - - - - - <h5>Essentials</h5> - <ul> - - <li class="none"> - <a href="../index.html">Welcome</a> - </li> - - <li class="none"> - <a href="../news.html">News and Status</a> - </li> - - <li class="none"> - <a href="../download.html">Download</a> - </li> - - <li class="none"> - <a href="../getting-started.html">Getting Started</a> - </li> - </ul> - <h5>Subprojects</h5> - <ul> - - <li class="none"> - <a href=".././portals-gems/index.html">Gems</a> - </li> - - <li class="none"> - <a href=".././demo/index.html">Demo</a> - </li> - - <li class="none"> - <a href=".././rss-main/index.html">RSS</a> - </li> - +<div class="section"> +<h2>Portlet Definitions<a name="Portlet_Definitions"></a></h2> + + +<p> + The Web Content Application 2 WAR Module contains several portlet definitions + in /WEB-INF/portlet.xml: + </p> +<ul> - +<li>IFrame Portlet 2</li> + +<li>ReverseProxy IFrame Portlet 2</li> + +<li>Web Content Portlet 2</li> + +<li>SimpleReverseProxyPortlet</li> + </ul> + All the portlets host content from a different website or local + servlet inside a portlet window. - - +<p> + The IFrame Portet 2 achieves this + by embedding an HTML + <a class="externalLink" href="http://en.wikipedia.org/wiki/HTML_element#Frames">iframe</a> + within a portlet. + </p> - +<p> + The ReverseProxy IFrame Portlet 2 behaves in the same way as IFrame Portlet 2 does, + except that it uses reverse proxy service URLs + instead of the original SRC URLs. + By using Reverse Proxy service component, more sophisticated content can be + served by setting content rewriting configurations or Cross-Domain Scripting can be enabled. + The Web Content Application includes Reverse Proxy Service servlet and component. + </p> - +<p> + The Web Content Portlet 2 takes a more complicated approach: it actually + embeds the content of the remote website inside the HTML payload + delivered by the portal, without the help of the browser. + This approach is more complicated since it may require rewriting + all links within the hosted website, that is, if you want to + keep the website navigation inside the portlet window. + While a noble cause, this approach is far from perfect and does not + always work correctly. + </p> - +<p> + The SimpleReverseProxyPortlet behaves in the same way as Reverse Proxy Servlet or Filter by itself + without having to depend on an external reverse proxy servlet or filter. + This portlet also rewrite all the links to portlet action URLs like Web Content Portlet 2 does. + This simple reverse proxying portlet can be used as a base class that you can extend or as an example. + </p> - +<p> + If you are interested in secure versions of these portlets, see + the Jetspeed-specific versions of the IFrame 2, ReverseProxyIFrame 2, or WebContent 2 + portlets found at the + <a class="externalLink" href="http://portals.apache.org/jetspeed-2/applications/j2-admin.html">Jetspeed J2-Admin</a> + website. + The SSOIFrame, SSOReverseProxyIFrame and SSOWebContent portlets leverage the Jetspeed SSO + Services, and are not portable to other portal servers. + </p> +<p>Here are the classes to declare when using the portlets:</p> + +<div class="source"> +<pre> +<portlet-class>org.apache.portals.applications.webcontent2.portlet.IFrameGenericPortlet</portlet-class> + </pre></div> + +<p> + <i>Note: The ReverseProxyIFramePortlet uses the same class, but has different preferences configurations.</i> + </p> + +<p>or</p> + +<div class="source"> +<pre> +<portlet-class>org.apache.portals.applications.webcontent2.portlet.WebContentPortlet</portlet-class> + </pre></div> + +<div class="section"> +<h3>Web Content Portlet Preferences or Init Parameters<a name="Web_Content_Portlet_Preferences_or_Init_Parameters"></a></h3> + +<table border="0" class="bodyTable"> + +<tr class="a"> + +<th>Name</th> + +<th>Type</th> +<th>Example Value</th> + +<th>Description</th> + </tr> + +<tr class="b"> + +<td>SRC</td> + +<td>Preference</td> + +<td>http://www.google.com</td> + +<td>The URL of the remote or local site to be hosted. + </td> + </tr> + +<tr class="a"> + +<td>PROXYHOST</td> + +<td>Preference</td> + +<td>proxyserver1.mycompany.com</td> + +<td>The proxy server host name.</td> + </tr> + +<tr class="b"> + +<td>PROXYPORT</td> + +<td>Preference</td> + +<td>8000</td> + +<td>The proxy server port.</td> + </tr> + </table> + </div> +<div class="section"> +<h3>IFrame Portlet Preferences or Init Parameters<a name="IFrame_Portlet_Preferences_or_Init_Parameters"></a></h3> + +<table border="0" class="bodyTable"> + +<tr class="a"> + +<th>Name</th> + +<th>Type</th> + +<th>Example Value</th> + +<th>Description</th> + </tr> + +<tr class="b"> + +<td>SRC</td> + +<td>Preference</td> + +<td> + http://portals.apache.org/index.html<br /> + </td> + +<td> + The URL of the remote or local site to be hosted. + <br /> + +<p> + You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> + So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then + the following configurations are equivalent:<br /> + </p> +<ul> + +<li>http://localhost:8080/webcontent/index.html</li> + +<li>http://localhost:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> + </ul> - <li class="expanded"> - <a href=".././webcontent2/index.html">WebContent-2</a> - <ul> - - <li class="none"> - <a href=".././webcontent2/modules-overview.html">Modules Overview</a> - </li> - - <li class="none"> - <a href=".././webcontent2/content-rewriter-module.html">Content Rewriter Module</a> - </li> - - <li class="none"> - <a href=".././webcontent2/reverse-proxy-module.html">Reverse Proxy Module</a> - </li> - - <li class="none"> - <a href=".././webcontent2/portlets-module.html">Portlets Module</a> - </li> - - <li class="none"> - <a href=".././webcontent2/war-module.html">WAR Module</a> - </li> - - <li class="none"> - <a href=".././webcontent2/build-from-source.html">Build from source</a> - </li> - - <li class="none"> - <a href=".././webcontent2/apidocs/index.html">JavaDocs</a> - </li> - - <li class="none"> - <a href=".././webcontent2/faq.html">FAQ</a> - </li> - </ul> - </li> - - <li class="none"> - <a href=".././webcontent/index.html">WebContent-1</a> - </li> - - <li class="none"> - <a href=".././dbbrowser/index.html">DB Browser</a> - </li> - - <li class="none"> - <a href=".././logging/index.html">Logging</a> - </li> - </ul> - <h5>Support</h5> - <ul> - - <li class="none"> - <a href="../team-list.html">Project Team</a> - </li> + </td> + </tr> + +<tr class="a"> + +<td>AUTORESIZE</td> + +<td>Preference</td> + +<td>true</td> + +<td> + If this preference value is set to true, then + this portlet tries to resize the height of the IFRAME tag based on the rendered content. + However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. + </td> + </tr> + +<tr class="b"> + +<td>VISITLASTPAGE</td> + +<td>Preference</td> + +<td>true</td> + +<td> + If this preference value is set to true, then + this last visited page in this portlet is stored in the session and the page will be revisited + when the portlet is rendered again. + However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. + </td> + </tr> + +<tr class="a"> + +<td>HEIGHT</td> + +<td>Preference</td> + +<td>300</td> + +<td>The height of the IFrame window when in Normal Window State</td> + </tr> + +<tr class="b"> + +<td>WIDTH</td> + +<td>Preference</td> + +<td>100%</td> + +<td>The width of the IFrame window when in Normal Window State. Can be a percentage of available space to the portlet, or a constant value</td> + </tr> + +<tr class="a"> + +<td>MAX-HEIGHT</td> + +<td>Preference</td> + +<td>800</td> + +<td>The height of the IFrame window when in Maximized Window State</td> + </tr> + +<tr class="b"> + +<td>MAX-WIDTH</td> + +<td>Preference</td> + +<td>100%</td> + +<td>The width of the IFrame window when in Maximized Window State. Can be a percentage of available space to the portlet, or a constant value</td> + </tr> + +<tr class="a"> + +<td>SCROLLING</td> + +<td>Preference</td> + +<td>AUTO | YES | NO</td> + +<td>Specifies whether or not to display scrollbars in an iframe</td> + </tr> + </table> + </div> + +<div class="section"> +<h3>ReverseProxyIFrame Portlet Preferences or Init Parameters<a name="ReverseProxyIFrame_Portlet_Preferences_or_Init_Parameters"></a></h3> + +<p> + <i> + Note: The ReverseProxyService should be able to access application level session attribute + shared by a portlet of IFrameGenericPortlet or its descendant, which is conforming + with the Portlet Specification. + If you are using Tomcat, then be sure to set the following in the server.xml to enable + this proper Portlet API session management requirements. + Modify the Connector element (default on port 8080) by adding the folowing attribute: + </p> +<div class="source"> +<pre>emptySessionPath="true"</pre></div> + </i> + + +<table border="0" class="bodyTable"> + +<tr class="a"> + +<th>Name</th> + +<th>Type</th> + +<th>Example Value</th> + +<th>Description</th> + </tr> + +<tr class="b"> + +<td>SRC</td> + +<td>Preference</td> + +<td>http://portals.apache.org/index.html</td> + +<td> + The URL of the remote or local site to be hosted. + <br /> + +<p> + You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> + So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then + the following configurations are equivalent:<br /> + </p> +<ul> + +<li>http://localhost:8080/webcontent/index.html</li> + +<li>http://localhost:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> + </ul> - <li class="none"> - <a href="../license.html">Project License</a> - </li> + </td> + </tr> + +<tr class="a"> + +<td>PROXYREMOTEURL</td> + +<td>Preference</td> + +<td>http://portals.apache.org/</td> + +<td> + The base URL of the remote site. + If 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set, + then this portlet translates the 'SRC' url into a reverse proxy url + by replacing the value of 'PROXYREMOTEURL' by the value of 'PROXYLOCALPATH'. + If you use the default reverse proxy component, then you should configure + the path mappings in the configuration file. (e.g., /WEB-INF/conf/reverseproxy.properties) + <br /> + +<p> + You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> + So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then + the following configurations are equivalent:<br /> + </p> +<ul> + +<li>http://localhost:8080/webcontent/index.html</li> + +<li>http://localhost:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/webcontent/index.html</li> + +<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> + </ul> - <li class="none"> - <a href="http://wiki.apache.org/portals/applications" class="externalLink">Project Wiki</a> - </li> + </td> + </tr> + +<tr class="b"> + +<td>PROXYLOCALPATH</td> + +<td>Preference</td> + +<td>${contextPath}/rproxy/portals/</td> + +<td> + The base URL of the local proxy URL. + If the value of 'PROXYLOCALPATH' doesn't starts with '/', then + this portlet prepends the context path of the local servlet application. + By default, this web application contains reverse proxy servlet mapped by '/rproxy' path. + For some cases, you can use other external proxy server by setting a context relative path + or absolute url such as '/apache' or 'http://www.localhost.com/apache'. + If you use the default reverse proxy component, then you should configure + the path mappings in the configuration file. (e.g., /WEB-INF/conf/reverseproxy.properties) + <br /> + +<p> + You can use the predefined variable, ${contextPath}, to set local paths.<br /> + So, if the request context path is '/webcontent', then + the following configurations are equivalent:<br /> + </p> +<ul> + +<li>/webcontent/rproxy/portals</li> + +<li>${contextPath}/rproxy/portals</li> + </ul> - <li class="none"> - <a href="../mail-lists.html">Mailing List</a> - </li> + </td> + </tr> + +<tr class="a"> + +<td>AUTORESIZE</td> + +<td>Preference</td> + +<td>true</td> + +<td> + If this preference value is set to true, then + this portlet tries to resize the height of the IFRAME tag based on the rendered content. + However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. + Also, if 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set to use a proxy url in the same domain, + then this option can be applied as well. + </td> + </tr> + +<tr class="b"> + +<td>VISITLASTPAGE</td> + +<td>Preference</td> + +<td>true</td> + +<td> + If this preference value is set to true, then + this last visited page in this portlet is stored in the session and the page will be revisited + when the portlet is rendered again. + However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. + Also, if 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set to use a proxy url in the same domain, + then this option can be applied as well. + </td> + </tr> + +<tr class="a"> + +<td>HEIGHT</td> + +<td>Preference</td> + +<td>300</td> + +<td>The height of the IFrame window when in Normal Window State</td> + </tr> + +<tr class="b"> + +<td>WIDTH</td> + +<td>Preference</td> + +<td>100%</td> + +<td>The width of the IFrame window when in Normal Window State. Can be a percentage of available space to the portlet, or a constant value</td> + </tr> + +<tr class="a"> + +<td>MAX-HEIGHT</td> + +<td>Preference</td> + +<td>800</td> + +<td>The height of the IFrame window when in Maximized Window State</td> + </tr> + +<tr class="b"> + +<td>MAX-WIDTH</td> + +<td>Preference</td> + +<td>100%</td> + +<td>The width of the IFrame window when in Maximized Window State. Can be a percentage of available space to the portlet, or a constant value</td> + </tr> + +<tr class="a"> + +<td>SCROLLING</td> + +<td>Preference</td> + +<td>AUTO | YES | NO</td> + +<td>Specifies whether or not to display scrollbars in an iframe</td> + </tr> + </table> + </div> + +<div class="section"> +<h3>SimpleReverseProxyPortlet Preferences or Init Parameters<a name="SimpleReverseProxyPortlet_Preferences_or_Init_Parameters"></a></h3> + +<table border="0" class="bodyTable"> + +<tr class="a"> + +<th>Name</th> + +<th>Type</th> + +<th>Example Value</th> + +<th>Description</th> + </tr> + +<tr class="b"> + +<td>remote.uri</td> + +<td>Preference, Request Parameter or Init Parameter</td> + +<td>http://portals.apache.org/news.html</td> + +<td> + The remote URL to be served through the internal reverse proxy components. + </td> + </tr> + +<tr class="a"> + +<td>xpath.expression</td> + +<td>Init Parameter</td> + +<td>//div[@id='bodyColumn']</td> + +<td> + The XPath expression string which is used by the internal reverse proxy components + (using HtmlCleaner library) + after retrieving the remote content in order to extract only the portion filtered by + this XPath expression. + </td> + </tr> + +<tr class="b"> + +<td>html.cleaner.transformation</td> + +<td>Init Parameter</td> + +<td> - <li class="none"> - <a href="../issue-tracking.html">Issue Tracking</a> - </li> - </ul> - <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"> - <img alt="Built by Maven" src="../images/logos/maven-feather.png"></img> - </a> - - +<div> +<pre>cfoutput | +c:block=div,false | +font=span,true | +font.size | +font.face | +font.style=${style};font-family=${face};font-size=${size};</pre></div> + </td> + +<td> + HtmlCleaner transformation setting configurations, + separated by '|'. + <br /> + For detail, see <a class="externalLink" href="http://htmlcleaner.sourceforge.net/parameters.php" target="_blank">http://htmlcleaner.sourceforge.net/parameters.php</a>. + </td> + </tr> + </table> + </div> - - - - - - </div> - </div> - <div id="bodyColumn"> - <div id="contentBox"> - <subtitle></subtitle><authors><person name="Woonsan Ko" email="[email protected]"></authors><div class="section"><h2><a name="WAR_Module"></a>WAR Module</h2> -<p> - The Web Content Application 2 WAR Module packages all the other modules - with default servlet/filter/portlet configurations and demonstration-purpose examples. - </p> -<div class="section"><h3><a name="Installtion"></a>Installtion</h3> -<p> - If you use <a class="externalLink" href="http://maven.apache.org/">Apache Maven</a> in your project, - then you can add the following dependency to use this module in your project. - </p> -<p><div class="source"><pre> - <dependency> - <groupId>org.apache.portals.applications</groupId> - <artifactId>apa-webcontent2-war</artifactId> - <type>war</type> - <version>${webcontent2.version}</version> - </dependency> - </pre> -</div> -</p> -</div> -</div> -<div class="section"><h2><a name="Default_Reverse_Proxy_ServletFilter_Definitions"></a>Default Reverse Proxy Servlet/Filter Definition(s)</h2> -<p> - The Web Content Application 2 WAR Module contains a reverse proxy servlet definition - like the following in /WEB-INF/web.xml by default. - </p> -<div class="source"><pre> - <!-- Default Reverse Proxy Servlet --> - <servlet> - <servlet-name>ReverseProxyServlet</servlet-name> - <servlet-class>org.apache.portals.applications.webcontent2.proxy.servlet.SimpleReverseProxyServlet</servlet-class> - <init-param> - <param-name>mappings</param-name> - <param-value> - /WEB-INF/rproxy-mappings.yaml - </param-value> - </init-param> - <init-param> - <param-name>ssl-hostname-verifier</param-name> - <param-value>ALLOW_ALL_HOSTNAME_VERIFIER</param-value> - </init-param> - </servlet> - - <!-- Map /rproxy path to the Default Reverse Proxy Servlet --> - <servlet-mapping> - <servlet-name>ReverseProxyServlet</servlet-name> - <url-pattern>/rproxy/*</url-pattern> - </servlet-mapping> - </pre> -</div> -<p> - The mapping configuration for the servlet is configured in <code>/WEB-INF/rproxy-mappings.yaml</code> by default: - </p> -<div class="source"><pre> ---- !regex -localPattern: ^/localhost_(\d+)/(.*)$ -remoteReplace: http://localhost:$1/$2 -remotePattern: ^http://localhost:(\d+)/(.*)$ -localReplace: /localhost_$1/$2 -contentRewriters: - text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] - ---- !simple -local: /portals/applications/ -remote: http://portals.apache.org/applications/ -contentRewriters: - text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] - ---- !simple -local: /portals/bridges/ -remote: http://portals.apache.org/bridges/ -contentRewriters: - text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] - ---- !regex -localPattern: ^/apache/(\w+)/(.*)$ -remoteReplace: http://$1.apache.org/$2 -remotePattern: ^http://(\w+)\.apache\.org/(.*)$ -localReplace: /apache/$1/$2 -contentRewriters: - text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] - ---- !simple -local: / -remote: http://apache.org/ -contentRewriters: - text/html: !!org.apache.portals.applications.webcontent2.proxy.rewriter.DefaultReverseProxyTextLineContentRewriter [] - </pre> -</div> -</div> -<div class="section"><h2><a name="Portlet_Definitions"></a>Portlet Definitions</h2> -<p> - The Web Content Application 2 WAR Module contains several portlet definitions - in /WEB-INF/portlet.xml: - <ul><li>IFrame Portlet 2</li> -<li>ReverseProxy IFrame Portlet 2</li> -<li>Web Content Portlet 2</li> -<li>SimpleReverseProxyPortlet</li> -</ul> - - All the portlets host content from a different website or local - servlet inside a portlet window. - </p> -<p> - The IFrame Portet 2 achieves this - by embedding an HTML - <a class="externalLink" href="http://en.wikipedia.org/wiki/HTML_element#Frames">iframe</a> - within a portlet. - </p> -<p> - The ReverseProxy IFrame Portlet 2 behaves in the same way as IFrame Portlet 2 does, - except that it uses reverse proxy service URLs - instead of the original SRC URLs. - By using Reverse Proxy service component, more sophisticated content can be - served by setting content rewriting configurations or Cross-Domain Scripting can be enabled. - The Web Content Application includes Reverse Proxy Service servlet and component. - </p> -<p> - The Web Content Portlet 2 takes a more complicated approach: it actually - embeds the content of the remote website inside the HTML payload - delivered by the portal, without the help of the browser. - This approach is more complicated since it may require rewriting - all links within the hosted website, that is, if you want to - keep the website navigation inside the portlet window. - While a noble cause, this approach is far from perfect and does not - always work correctly. - </p> -<p> - The SimpleReverseProxyPortlet behaves in the same way as Reverse Proxy Servlet or Filter by itself - without having to depend on an external reverse proxy servlet or filter. - This portlet also rewrite all the links to portlet action URLs like Web Content Portlet 2 does. - This simple reverse proxying portlet can be used as a base class that you can extend or as an example. - </p> -<p> - If you are interested in secure versions of these portlets, see - the Jetspeed-specific versions of the IFrame 2, ReverseProxyIFrame 2, or WebContent 2 - portlets found at the - <a class="externalLink" href="http://portals.apache.org/jetspeed-2/applications/j2-admin.html">Jetspeed J2-Admin</a> - website. - The SSOIFrame, SSOReverseProxyIFrame and SSOWebContent portlets leverage the Jetspeed SSO - Services, and are not portable to other portal servers. - </p> -<p>Here are the classes to declare when using the portlets:</p> -<div class="source"><pre> -<portlet-class>org.apache.portals.applications.webcontent2.portlet.IFrameGenericPortlet</portlet-class> - </pre> -</div> -<p><em>Note: The ReverseProxyIFramePortlet uses the same class, but has different preferences configurations.</em></p> -<p>or</p> -<div class="source"><pre> -<portlet-class>org.apache.portals.applications.webcontent2.portlet.WebContentPortlet</portlet-class> - </pre> -</div> -<div class="section"><h3><a name="Web_Content_Portlet_Preferences_or_Init_Parameters"></a>Web Content Portlet Preferences or Init Parameters</h3> -<table class="bodyTable"><tr class="a"><th>Name</th> -<th>Type</th> -<th>Example Value</th> -<th>Description</th> -</tr> -<tr class="b"><td>SRC</td> -<td>Preference</td> -<td>http://www.google.com</td> -<td>The URL of the remote or local site to be hosted. - </td> -</tr> -<tr class="a"><td>PROXYHOST</td> -<td>Preference</td> -<td>proxyserver1.mycompany.com</td> -<td>The proxy server host name.</td> -</tr> -<tr class="b"><td>PROXYPORT</td> -<td>Preference</td> -<td>8000</td> -<td>The proxy server port.</td> -</tr> -</table> -</div> -<div class="section"><h3><a name="IFrame_Portlet_Preferences_or_Init_Parameters"></a>IFrame Portlet Preferences or Init Parameters</h3> -<table class="bodyTable"><tr class="a"><th>Name</th> -<th>Type</th> -<th>Example Value</th> -<th>Description</th> -</tr> -<tr class="b"><td>SRC</td> -<td>Preference</td> -<td> - http://portals.apache.org/index.html<br /> -</td> -<td> - The URL of the remote or local site to be hosted. - <br /> -<p> - You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> - - So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then - the following configurations are equivalent:<br /> -<ul><li>http://localhost:8080/webcontent/index.html</li> -<li>http://localhost:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> -</ul> -</p> -</td> -</tr> -<tr class="a"><td>AUTORESIZE</td> -<td>Preference</td> -<td>true</td> -<td> - If this preference value is set to true, then - this portlet tries to resize the height of the IFRAME tag based on the rendered content. - However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. - </td> -</tr> -<tr class="b"><td>VISITLASTPAGE</td> -<td>Preference</td> -<td>true</td> -<td> - If this preference value is set to true, then - this last visited page in this portlet is stored in the session and the page will be revisited - when the portlet is rendered again. - However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. - </td> -</tr> -<tr class="a"><td>HEIGHT</td> -<td>Preference</td> -<td>300</td> -<td>The height of the IFrame window when in Normal Window State</td> -</tr> -<tr class="b"><td>WIDTH</td> -<td>Preference</td> -<td>100%</td> -<td>The width of the IFrame window when in Normal Window State. Can be a percentage of available space to the portlet, or a constant value</td> -</tr> -<tr class="a"><td>MAX-HEIGHT</td> -<td>Preference</td> -<td>800</td> -<td>The height of the IFrame window when in Maximized Window State</td> -</tr> -<tr class="b"><td>MAX-WIDTH</td> -<td>Preference</td> -<td>100%</td> -<td>The width of the IFrame window when in Maximized Window State. Can be a percentage of available space to the portlet, or a constant value</td> -</tr> -<tr class="a"><td>SCROLLING</td> -<td>Preference</td> -<td>AUTO | YES | NO</td> -<td>Specifies whether or not to display scrollbars in an iframe</td> -</tr> -</table> -</div> -<div class="section"><h3><a name="ReverseProxyIFrame_Portlet_Preferences_or_Init_Parameters"></a>ReverseProxyIFrame Portlet Preferences or Init Parameters</h3> -<p><em> - Note: The ReverseProxyService should be able to access application level session attribute - shared by a portlet of IFrameGenericPortlet or its descendant, which is conforming - with the Portlet Specification. - If you are using Tomcat, then be sure to set the following in the server.xml to enable - this proper Portlet API session management requirements. - Modify the Connector element (default on port 8080) by adding the folowing attribute: - <div class="source"><pre>emptySessionPath="true"</pre> -</div> -</em></p> -<table class="bodyTable"><tr class="b"><th>Name</th> -<th>Type</th> -<th>Example Value</th> -<th>Description</th> -</tr> -<tr class="a"><td>SRC</td> -<td>Preference</td> -<td>http://portals.apache.org/index.html</td> -<td> - The URL of the remote or local site to be hosted. - <br /> -<p> - You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> - - So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then - the following configurations are equivalent:<br /> -<ul><li>http://localhost:8080/webcontent/index.html</li> -<li>http://localhost:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> -</ul> -</p> -</td> -</tr> -<tr class="b"><td>PROXYREMOTEURL</td> -<td>Preference</td> -<td>http://portals.apache.org/</td> -<td> - The base URL of the remote site. - If 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set, - then this portlet translates the 'SRC' url into a reverse proxy url - by replacing the value of 'PROXYREMOTEURL' by the value of 'PROXYLOCALPATH'. - If you use the default reverse proxy component, then you should configure - the path mappings in the configuration file. (e.g., /WEB-INF/conf/reverseproxy.properties) - <br /> -<p> - You can use predefined variables, ${serverName}, ${serverPort} or ${contextPath}, to set local URLs.<br /> - - So, if the requested server name is 'localhost', the requested server port is '8080' and the request context path is '/webcontent', then - the following configurations are equivalent:<br /> -<ul><li>http://localhost:8080/webcontent/index.html</li> -<li>http://localhost:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/webcontent/index.html</li> -<li>http://${serverName}:${serverPort}/${contextPath}/index.html</li> -</ul> -</p> -</td> -</tr> -<tr class="a"><td>PROXYLOCALPATH</td> -<td>Preference</td> -<td>${contextPath}/rproxy/portals/</td> -<td> - The base URL of the local proxy URL. - If the value of 'PROXYLOCALPATH' doesn't starts with '/', then - this portlet prepends the context path of the local servlet application. - By default, this web application contains reverse proxy servlet mapped by '/rproxy' path. - For some cases, you can use other external proxy server by setting a context relative path - or absolute url such as '/apache' or 'http://www.localhost.com/apache'. - If you use the default reverse proxy component, then you should configure - the path mappings in the configuration file. (e.g., /WEB-INF/conf/reverseproxy.properties) - <br /> -<p> - You can use the predefined variable, ${contextPath}, to set local paths.<br /> - - So, if the request context path is '/webcontent', then - the following configurations are equivalent:<br /> -<ul><li>/webcontent/rproxy/portals</li> -<li>${contextPath}/rproxy/portals</li> -</ul> -</p> -</td> -</tr> -<tr class="b"><td>AUTORESIZE</td> -<td>Preference</td> -<td>true</td> -<td> - If this preference value is set to true, then - this portlet tries to resize the height of the IFRAME tag based on the rendered content. - However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. - Also, if 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set to use a proxy url in the same domain, - then this option can be applied as well. - </td> -</tr> -<tr class="a"><td>VISITLASTPAGE</td> -<td>Preference</td> -<td>true</td> -<td> - If this preference value is set to true, then - this last visited page in this portlet is stored in the session and the page will be revisited - when the portlet is rendered again. - However, this option is applied only when the 'SRC' url is in the same domain of the portal URL. - Also, if 'PROXYREMOTEURL' and 'PROXYLOCALPATH' are set to use a proxy url in the same domain, - then this option can be applied as well. - </td> -</tr> -<tr class="b"><td>HEIGHT</td> -<td>Preference</td> -<td>300</td> -<td>The height of the IFrame window when in Normal Window State</td> -</tr> -<tr class="a"><td>WIDTH</td> -<td>Preference</td> -<td>100%</td> -<td>The width of the IFrame window when in Normal Window State. Can be a percentage of available space to the portlet, or a constant value</td> -</tr> -<tr class="b"><td>MAX-HEIGHT</td> -<td>Preference</td> -<td>800</td> -<td>The height of the IFrame window when in Maximized Window State</td> -</tr> -<tr class="a"><td>MAX-WIDTH</td> -<td>Preference</td> -<td>100%</td> -<td>The width of the IFrame window when in Maximized Window State. Can be a percentage of available space to the portlet, or a constant value</td> -</tr> -<tr class="b"><td>SCROLLING</td> -<td>Preference</td> -<td>AUTO | YES | NO</td> -<td>Specifies whether or not to display scrollbars in an iframe</td> -</tr> -</table> -</div> -<div class="section"><h3><a name="SimpleReverseProxyPortlet_Preferences_or_Init_Parameters"></a>SimpleReverseProxyPortlet Preferences or Init Parameters</h3> -<table class="bodyTable"><tr class="a"><th>Name</th> -<th>Type</th> -<th>Example Value</th> -<th>Description</th> -</tr> -<tr class="b"><td>remote.uri</td> -<td>Preference, Request Parameter or Init Parameter</td> -<td>http://portals.apache.org/news.html</td> -<td> - The remote URL to be served through the internal reverse proxy components. - </td> -</tr> -<tr class="a"><td>xpath.expression</td> -<td>Init Parameter</td> -<td>//div[@id='bodyColumn']</td> -<td> - The XPath expression string which is used by the internal reverse proxy components - (using HtmlCleaner library) - after retrieving the remote content in order to extract only the portion filtered by - this XPath expression. - </td> -</tr> -<tr class="b"><td>html.cleaner.transformation</td> -<td>Init Parameter</td> -<td><pre>cfoutput | -c:block=div,false | -font=span,true | -font.size | -font.face | -font.style=${style};font-family=${face};font-size=${size};</pre></td> -<td> - HtmlCleaner transformation setting configurations, - separated by '|'. - <br /> - - For detail, see <a class="externalLink" href="http://htmlcleaner.sourceforge.net/parameters.php">http://htmlcleaner.sourceforge.net/parameters.php</a>. - </td> -</tr> -</table> -</div> -<p>Here are examples of the Web Content, IFrame, ReverseProxyIFrame and SimpleReverseProxy Portlets:</p> -<p></p> -<img src="../images/wc.png" /><p></p> -<img src="../images/iframe.png" /><p></p> -<img src="../images/rproxyif.png" /><p></p> -<img src="../images/simplereverseproxy.png" /><p></p> -</div> + +<p>Here are examples of the Web Content, IFrame, ReverseProxyIFrame and SimpleReverseProxy Portlets:</p> + + +<p> </p> + + <img src="../images/wc.png" alt="" /> + + +<p> </p> + + <img src="../images/iframe.png" alt="" /> + + +<p> </p> + + <img src="../images/rproxyif.png" alt="" /> + + +<p> </p> + + <img src="../images/simplereverseproxy.png" alt="" /> + + +<p> </p> - </div> - </div> - <div class="clear"> - <hr/> </div> - <div id="footer"> - <div class="xright">© - 2004-2015 - - Apache Software Foundation - - - - - - - </div> - <div class="clear"> - <hr/> - </div> - </div> - </body> -</html> + + + </div> + </div> + <div class="clear"> + <hr/> + </div> + <div id="footer"> + <div class="xright"> + Copyright © 2004-2022 + <a href="http://www.apache.org/">Apache Software Foundation</a>. + All Rights Reserved. + + </div> + <div class="clear"> + <hr/> + </div> + </div> + </body> +</html>
