<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Main</title>
    <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674</link>
    <description />
    <item>
      <title>Sample Portlets/Hibernate 1.1</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Sample+Portlets%2FHibernate</link>
      <description>this is first example</description>
      <pubDate>Thu, 16 May 2013 08:16:52 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Sample+Portlets%2FHibernate</guid>
      <dc:creator>venkatesh jonnakuti</dc:creator>
      <dc:date>2013-05-16T08:16:52Z</dc:date>
    </item>
    <item>
      <title>Liferay IDE Proxy Configuration 5.2 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Liferay+IDE+Proxy+Configuration</link>
      <description>== Requirements For Tutorial ==
*[[http://www.liferay.com/downloads/liferay-projects/liferay-ide| Liferay IDE 2.0.x]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.1.1%20GA2/liferay-portal-tomcat-6.1.1-ce-ga2-20120731132656558.zip| Liferay Portal Server 6.1.1 CE GA2]]
* Liferay Portal Server 6.1.x running remotely (Tomcat, JBoss, Glassfish servers supported and [[http://issues.liferay.com/browse/IDE-874|Proxies]] supported.
* OmniAdmin username/password for remote Liferay Portal instance
* Download one of the liferay IDE test bundles which contain a 2.0 test build from the urls below:
\\[[http://ftp.liferay.com/eclipse_Liferay_IDE_2.0.0.20130508-0656-linux-x86_64.tar.gz|Liferay IDE bundle for Linux(64-bit)]]
md5: 115495fbd08bc8f78e01bd708713dd0b

[[http://ftp.liferay.com/eclipse_Liferay_IDE_2.0.0.20130508-0656-linux.tar.gz|Liferay IDE bundle for Linux(32-bit)]]
md5: 145b5ffb0f72d717ca7ef5bf22fe9918

[[http://ftp.liferay.com/eclipse_Liferay_IDE_2.0.0.20130508-0656-windows-x86_64.zip|Liferay IDE bundle for Windows(64-bit)]]
md5: 51071a9f1e2bdb7af2f6c4800aa0e6e5

[[http://ftp.liferay.com/eclipse_Liferay_IDE_2.0.0.20130508-0656-windows.zip|Liferay IDE bundle for Windows(32-bit)]]
md5: ce967ca4535df300e0ff20bc0756deb3

== Introduction ==

The Remote Server support is a feature of Liferay IDE where you can deploy your Liferay projects to a remote Liferay Portal.  The remote instance of Liferay Portal must have the [[http://www.liferay.com/marketplace/-/mp/application/15193785?_7_WAR_osbportlet_backURL=%2Fmarketplace%2F-%2Fmp%2Fcategory%2F11232561|Remote IDE Connector application]] installed from Liferay marketplace.   This application installs the server-manager-web plugin for Liferay that provides an API for Liferay IDE's Remote Server Adapter to use for all its remote operations.  In the test builds above a new feature has been added that includes support for HTTP and SOCKS type proxies.  

== Configure the Remote Server Adapter to use a HTTP/SOCKS Proxy ==

You can configure both the HTTP or SOCKS proxy for connecting to Liferay Portal with the remote server adapter.  Below are the steps to follow:

# Ensure that the remote Liferay Portal instance is running and you can login using OmniAdmin username/password
# Ensure your proxy server is running and configured.
# In Eclipse bundled with Liferay IDE 2.0.x plugins installed, go to Windows &gt; //preferences &gt; //General &gt; Network Connections, then in the Active Provider check box, choose Manual.\\{{wiki_preferences_configuration_1.png}}
# Clear all the data in Proxy entries by selecting each entry's data and clicking on the clear button.
# Double click on the HTTP (or SOCKS) entry which depends on which type of proxy you want to use and input your proxy server's hostID and port. \\{{wiki_preferences_configuration_2.png}}
# Select OK
# The next thing is to remove the data in the Proxy bypass, because the default hostname for liferay IDE is localhost(127.0.0.1), and you must remove the default bypass to make the proxy you will set work correctly. \\{{wiki_preferences_configuration_3.png}}
# Select OK
# The next step is to define a new remote server. So the first thing is to click on the liferay server shortcut and open a new page called Define a New Server. \\{{wiki_define_new_server.png}}
# Select next
# Then type in the hostname for the remote Liferay Portal.  
# Select the runtime stub as well or configure a new one if one isn't available.  This must point to a local Liferay Portal Tomcat bundle.
# Then you'll see the validating is working, and it may take a few seconds. \\{{wiki_validating_connection_1.png}}
# Click Next
# The wizard will begin validating the connection, and will show any invalid response from the server as a warning.
# If you've set the proxy configuration in the preference following the steps above, but the remote server is shutdown or the proxy isn't working, you'll see this errror:\\{{wiki_error_info_1.png}}
# If you even haven't set any proxy at all or the situation is the normal access blocked by the remote server, you will see another error like this: \\{{wiki_error_info_2.png}}
# Don't forget to input the password for the first time verification. If the password is not given, even though what you've configured is right, it will still have an error. \\{{wiki_error_info_3.png}}
# When everything above is correct, then type in your passwd and click on validate button again. You will see the correct response like this. \\{{wiki_correct_info.png}}
# Select //Finish//
# Once you select Finish, the new Remote Server will be available in the Servers view and Eclipse will connect to the remote server by the proxy which you've already configured.  Then the remote liferay logs will be displayed in Eclipse's console. If your remote server is in debug mode, the Eclipse java debugger will be attached to the remote process automatically. \\{{wiki_console_info_1.png}}
# If the settings are invalid and the connection can't be established, you can modify the Remote Server settings at any time by double-clicking the server instance in the Servers view and modify the settings in the configuration editor. \\{{wiki_servers_view.png}}

== Using the Remote Server Adapter ==

Once you have the Remote Server correctly configured and connected in Eclipse, you can begin using it as you would a local Liferay Portal Tomcat server, publishing projects to the server.

# Right-click the server and choose //Add and Remove modules...//
# Select Liferay projects you wish to publish to the remote server, select //Finish//
# The deployment process should start and after it is published to remote server you should see a message saying plugin is deployed\\{{wiki_remote_deploy_test_1.png}}
# After you have made the initial remote deployment, if you make any changes to your project, you will need to publish these changes (or have them published automatically in the settings).  To invoke a publish operation (after having modified some project files) right click on the server in the Servers view and select //Publish//\\{{wiki_remote_deploy_test_2.png}}
# If you want to modify the publish operation behavior, you can do that in the server configuration editor (double-click server in Servers view) \\{{wiki_remote_deploy_test_3.png}}#If you receive errors, visit the [[http://www.liferay.com/community/forums/-/message_boards/category/4627757|Liferay IDE forums]] and post the warning/error to try to get help.</description>
      <pubDate>Fri, 10 May 2013 09:29:33 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Liferay+IDE+Proxy+Configuration</guid>
      <dc:creator>Gregory Amerson</dc:creator>
      <dc:date>2013-05-10T09:29:33Z</dc:date>
    </item>
    <item>
      <title>Jetty tips 1.3</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Jetty+tips</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== Jetty 7 and deployment order ==

Jetty 7 by default uses **ContextProvider **that monitors **contexts **folder for XMLs for all web apps that are deployed. However, there is no way to specify the order of deployment. Therefore, when you have Jetty with some plugins (e.g. analog-clock and marketplace), it may happens that on Jetty restart, only one of those plugins will be available. This is because Jetty on startup takes context xmls in its own order. 


The only solution for Jetty 7 is not to use monitoring context provider, but to explicitly write down contexts that has to be loaded in configuration file. The order of context will be the deployment order. So, backup the original **/etc/jetty-contexts.xml** and write something like this:

{{{
&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"&gt;

&lt;Configure id="Server" class="org.eclipse.jetty.server.Server"&gt;

      &lt;Set name="handler"&gt;
        &lt;New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"&gt;
          &lt;Set name="handlers"&gt;
            &lt;Array type="org.eclipse.jetty.server.Handler"&gt;


        &lt;Item&gt;
           &lt;New class="org.eclipse.jetty.webapp.WebAppContext"&gt;
            &lt;Set name="contextPath"&gt;/&lt;/Set&gt;
            &lt;Set name="extraClasspath"&gt;&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-server-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-util-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-webapp-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar&lt;/Set&gt;
            
            &lt;Set name="resourceBase"&gt;&lt;SystemProperty name="jetty.home" /&gt;/webapps/root&lt;/Set&gt;
            &lt;Get name="securityHandler"&gt;
              &lt;Set name="loginService"&gt;
                &lt;New class="org.eclipse.jetty.security.HashLoginService" id="defaultLoginService"&gt;
                  &lt;Set name="name"&gt;Test Realm&lt;/Set&gt;
                  &lt;Set name="config"&gt;&lt;SystemProperty name="jetty.home" default="."/&gt;/etc/realm.properties&lt;/Set&gt;
                &lt;/New&gt;
              &lt;/Set&gt;
            &lt;/Get&gt;
            &lt;/New&gt;
       &lt;/Item&gt;

       &lt;Item&gt;
           &lt;New class="org.eclipse.jetty.webapp.WebAppContext"&gt;
              &lt;Set name="contextPath"&gt;/analog-clock-portlet&lt;/Set&gt;
              &lt;Set name="extraClasspath"&gt;&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-server-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-util-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-webapp-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar&lt;/Set&gt;
              &lt;Set name="resourceBase"&gt;&lt;SystemProperty name="jetty.home" /&gt;/webapps/analog-clock-portlet&lt;/Set&gt;
              &lt;Get name="securityHandler"&gt;
                &lt;Set name="loginService"&gt;
                  &lt;New class="org.eclipse.jetty.security.HashLoginService" id="defaultLoginService"&gt;
                    &lt;Set name="name"&gt;Test Realm&lt;/Set&gt;
                    &lt;Set name="config"&gt;&lt;SystemProperty name="jetty.home" default="."/&gt;/etc/realm.properties&lt;/Set&gt;
                  &lt;/New&gt;
                &lt;/Set&gt;
              &lt;/Get&gt;

            &lt;/New&gt;
        &lt;/Item&gt;


        &lt;Item&gt;
          &lt;New class="org.eclipse.jetty.webapp.WebAppContext"&gt;

            &lt;Set name="contextPath"&gt;/marketplace-portlet&lt;/Set&gt;
            &lt;Set name="extraClasspath"&gt;&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-server-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-util-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar,&lt;SystemProperty name="jetty.home" /&gt;/lib/jetty-webapp-&lt;SystemProperty name="app.server.jetty.version" /&gt;.v&lt;SystemProperty name="app.server.jetty.version.date" /&gt;.jar&lt;/Set&gt;
            &lt;Set name="resourceBase"&gt;&lt;SystemProperty name="jetty.home" /&gt;/webapps/marketplace-portlet&lt;/Set&gt;
            &lt;Get name="securityHandler"&gt;
              &lt;Set name="loginService"&gt;
                &lt;New class="org.eclipse.jetty.security.HashLoginService" id="defaultLoginService"&gt;
                  &lt;Set name="name"&gt;Test Realm&lt;/Set&gt;
                  &lt;Set name="config"&gt;&lt;SystemProperty name="jetty.home" default="."/&gt;/etc/realm.properties&lt;/Set&gt;
                &lt;/New&gt;
              &lt;/Set&gt;
            &lt;/Get&gt;

          &lt;/New&gt;
        &lt;/Item&gt;


            &lt;/Array&gt;
          &lt;/Set&gt;
        &lt;/New&gt;
      &lt;/Set&gt;

&lt;/Configure&gt; 

}}}


As you can see, each of 3 contexts are written here. The content of each section is equal to its context/*.xml file.</description>
      <pubDate>Wed, 08 May 2013 08:59:03 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Jetty+tips</guid>
      <dc:creator>Igor Spasić</dc:creator>
      <dc:date>2013-05-08T08:59:03Z</dc:date>
    </item>
    <item>
      <title>Application Servers 3.3</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Application+Servers</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;


An application server is a component-based software framework that resides in the middle-tier of a server centric architecture and provides the business logic for an application program.


Liferay Portal supports many of today's most popular application servers. Even better, there are already prepared and pre-configured portal distribution packages bundled with application server; you can find them on our [[http://www.liferay.com/downloads|download page]]. While bundles are available for open-source app servers, Liferay portal can be deployed to other popular commercial products, like Websphere and Weblogic.



As we all know, deploying and configuring web application is, more or less, different between application servers. Since Liferay Portal is features-packed web application that uses many industrial standards and software solutions, sometimes it happens that it is not enough just to deploy the portal, but some additional application server relate tweaks and tricks has to be applied in order to make everything works as expected.


These pages will try to summarize some experience with configuring and running Liferay portal on different application servers.


Note #1: tips for some version of application server may be applied to other version, too; so do not forget to check it all.


Note #2: the following application server descriptions are taken from official homepages and white papers

== Tomcat ==

[[Tomcat tips|Tomcat tips]]


Apache Tomcat is an open source software implementation of the Java Servlet and JavaServer Pages technologies. It is developed in an open and participatory environment and released under the Apache License version 2. Apache Tomcat is intended to be a collaboration of the best-of-breed developers from around the world. 

[[http://tomcat.apache.org/|http://tomcat.apache.org/]]

== TCat ==

TCat is a very light weight monitoring and management framework to help augment Tomcat with "enterprise" monitoring and management features.  TCat helps combine the ease of development desired by developers with the management and administration capabilities many system administrators desire.


TCat is easily deployed to an existing Tomcat binaries without having to worry about special Tomcat distributions.

[[http://www.mulesoft.com/tcat-leading-enterprise-apache-tomcat-application-server|http://www.mulesoft.com/tcat-leading-enterprise-apache-tomcat-application-server]]

== tcServer ==

tcServer is another Tomcat variant.  Unlike TCat which plays within your existing Tomcat deployments, tcServer requires that you download a special bundled version of Tomcat, specifically the tcServer bundle.  However, like TCat, tcServer helps provide system administrators their management and monitoring tools without sacrificing the lightweight and agility desired by developers.

[[http://www.vmware.com/products/application-platform/vfabric-tcserver/overview.html|http://www.vmware.com/products/application-platform/vfabric-tcserver/overview.html]]

== Geronimo ==

[[Geronimo tips|Geronimo tips]]


The goal of the Geronimo project is to produce a server runtime framework that pulls together the best Open Source alternatives to create runtimes that meet the needs of developers and system administrators. Geronimo most popular distribution is a fully certified Java EE 5 application server runtime.

[[http://geronimo.apache.org/|http://geronimo.apache.org/]]

== Glassfish ==

[[Glassfish tips|Glassfish tips]]


GlassFish is an open source, production-ready, Java EE-compatible application server. 
GlassFish version 3 provides a small footprint, fully-featured implementation of Java EE 6. The Java EE 6 platform significantly improves developer productivity, introduces the lightweight Web Profile for Web-centric applications, and includes the latest versions of technologies such as such as JAX-RS 1.1, JavaServer Faces(JSF) 2.0, Enterprise JavaBeans (EJB) 3.1, Java Persistence (JPA) 2.0, Context and Dependency Injection (CDI) 1.0 and more. GlassFish is a Java EE open source application server.

[[http://glassfish.java.net/|http://glassfish.java.net/]]

== JBoss ==

JBoss Application Server (or JBoss AS) is a free software/open-source Java EE-based application server. JBoss Enterprise Application Platform is the market leading platform for innovative and scalable Java applications. Integrated, simplified, and delivered by the leader in enterprise open source software, it includes leading open source technologies for building, deploying, and hosting enterprise Java applications and services. 


JBoss Enterprise Application Platform balances innovation with enterprise class stability by integrating the most popular clustered Java EE application server with next generation application frameworks. Built on open standards, JBoss Enterprise Application Platform integrates JBoss Application Server, with JBoss Hibernate, JBoss Seam, and other leading open source Java technologies from JBoss.org into a complete, simple enterprise solution for Java applications.

[[http://www.jboss.com/products/platforms/application/|http://www.jboss.com/products/platforms/application/]]

=== JBoss 5,6 ===

[[JBoss tips|JBoss tips]]

=== JBoss AS7 ===

[[JBoss AS7 tips|JBoss AS7 tips]]

== Jetty ==

[[Jetty tips|Jetty tips]]


Jetty provides an HTTP server, HTTP client, and javax.servlet container. These components are open source and available for commercial use and distribution. Jetty is used in a wide variety of projects and products. Jetty can be embedded in devices, tools, frameworks, application servers, and clusters.

[[http://jetty.codehaus.org/jetty/|http://jetty.codehaus.org/jetty/]]

== JOnAS ==

[[http://www.liferay.com/community/wiki/-/wiki/Main/Jonas+Tips|Jonas Tips]]


JOnAS 5, the new generation dynamic application platform from OW2, provides many innovative features to Java EETM platform administrators, operators and developers. Its brand new OSGi based architecture, combined with the JASMINe tool, enables complex but non intrusive administration operations on production environments, its powerful and dynamic clustering solutions adapt to any kind of usage, and its EJB3 container EasyBeans makes application development and deployment still more easy. The License used by JOnAS is the LGPL. 

[[http://wiki.jonas.objectweb.org/|http://wiki.jonas.objectweb.org/]]

== Resin ==

[[Resin 4 tips|Resin 4 tips]]


Resin architecture features high performance, scalability and rigorous reliability. Resin Professional and its core components are widely deployed in government, commercial and education web sites. Implementation includes Federal emergency programs, high traffic travel online services, banking, mobile applications and online gaming. With over 360,000 deployed hosts worldwide, Resin is easy on the budget and goes well beyond industry performance expectations.

[[http://www.caucho.com/|http://www.caucho.com/]]

== Weblogic ==

With Oracle WebLogic Server, Oracle provides a solid foundation for SOA based on the Java Platform, Enterprise Edition 5 (Java EE 5). Oracle WebLogic Server is extremely easy to use right out of the box and delivers industrial-grade reliability, availability, scalability, and performance. Customers can rapidly upgrade existing services and manage them with powerful configuration, deployment, and management tools. They can also leverage integration with other Oracle Fusion Middleware products as well as their developers’ experience with open source technologies such as the Spring Framework.

[[http://www.oracle.com/technetwork/middleware/weblogic/index.html|http://www.oracle.com/technetwork/middleware/weblogic/index.html]]

=== Weblogic 11 ===

[[Weblogic tips|Weblogic tips]]

=== Weblogic 12 ===

[[Weblogic 12 tips|Weblogic 12 tips]]

== WebSphere ==

The WebSphere Application Server drives business agility by providing millions of developers and IT Architects with an innovative, performance-based foundation to build, reuse, run, integrate and manage Service Oriented Architecture (SOA) applications and services. From business critical and key enterprise-wide applications to the smallest departmental level applications, WebSphere Application Server offers the highest levels of reliability, availability, security and scalability. Only WebSphere Application Server has the three foundational attributes to enable robust and agile business applications: Simplified Development, High Performance and Intelligent Management.

[[http://www-01.ibm.com/software/webservers/appserv/was/|http://www-01.ibm.com/software/webservers/appserv/was/]]

[[http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rovr_specs.html|Specifications and API documentation]]

=== WAS v6.1 ===

[[Websphere 6.1 tips|Websphere 6.1 tips]]


Supports the following standards: EJB 2.1, JCA 1.5, JDBC 3.0, JSP 2.0, Servlet 2.4, XML4J 4.4.x, XSLT4J 2.7.x

[[http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp|WAS 6.1. documentation]]

=== WAS v7 ===

[[WebSphere 7 tips|WebSphere 7 tips]]

[[http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp|WAS 7.0 documentation]]

=== WAS v8 ===

[[WebSphere 8 tips|WebSphere 8 tips]]

[[http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp|WAS 8.0 documentation]]</description>
      <pubDate>Wed, 08 May 2013 08:37:25 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Application+Servers</guid>
      <dc:creator>Igor Spasić</dc:creator>
      <dc:date>2013-05-08T08:37:25Z</dc:date>
    </item>
    <item>
      <title>WebDAV 4.4</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;WebDAV</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;


The Document Library and Journal portlets now provide support for the WebDAV protocol so users can upload and organize resources from both a web interface and the file explorer of their desktop operating system.  Starting with Liferay Portal 5.0, Image Gallery will also be accessable via WebDAV.

== What is WebDAV ==

WebDAV provides functionality to create, change and move documents on a remote server (typically a web server or "web share"). WebDAV is supported by all major Operating Systems and Desktop Environments including Windows, MacOS X and Linux (KDE and GNOME).


For more information visit:

*[[http://en.wikipedia.org/wiki/WebDAV|http://en.wikipedia.org/wiki/WebDAV]]
*[[http://www.webdav.org/|http://www.webdav.org/]]
== Determining the WebDAV URL ==
**Document Library** - In the Document Library portlet, navigate to the specific folder and edit it (click the edit button to the right). In there you will see the direct WebDAV URL for that location.**
**Image Gallery** (v5.0+) - Pretty much the same as the Document Library.**
**Journal** - In the Journal portlet, navigate to the specific Journal Template and edit it.  You should see the direct WebDAV URL for that template.**

== Login Credentials ==

You can login using the login credentials you use to access the portal.  In fact, you can use the email address, user ID or screen name -- all three will work.


In earlier versions of Liferay, you could only use your user ID.  You can find your User ID by clicking My Account. It should be one of the first entries in the Profile tab that comes up.  So if my User ID is 12345, then my login information would be:

{{{
 Login = 12345
 Password = ****
}}}

**Note**: Any time you change your password, emailaddress or screenname, you may need to re-login to the server via the portal.  This includes when you first upgrade or use a clean installation of Liferay.  Otherwise, when you login, you may see in your stacktrace something like the following: "User must first login through the portal 1234".

== Configuring WebDAV support ==

By default Liferay Portal allows WebDAV connections from any server using HTTP or HTTPS. It is possible to have a more secure configuration through the following properties of portal(-ext).properties:

{{{
 webdav.servlet.hosts.allowed=
 webdav.servlet.https.required=false
}}}

**Note**: this configuration is not currently available in 4.3.0

== Accessing a WebDAV URL ==

Each WebDAV accessible resource of Liferay has an associated URL. Copy that URL and use it to configure the file (or WebDAV) browser that you prefer. You will be asked to authenticate with your userId and password.


Following are specific instructions of how to configure access to the folder using WebDAV once you have the URL:

=== Windows ===

Connecting to WebDav from Windows GUI may not always work as expected. It is recommended to use "**net use" **command from command line.

==== Mapping Network Drive (Vista or 7 only) ====
# Right click on the //Network// icon and select //Map Network Drive//.{{Windows%20Map%20Network%20Drive%201.png}}
# Select a drive and enter the WebDAV URL and click //Finish//.  Enter credentials when prompted.{{Windows%20Map%20Network%20Drive%202.png}}

==== Using "Add Network Places" Wizard (XP, Vista or 7) ====
# On Vista or Windows 7, right click on the //Computer// icon and select //Add Network Location//.  On XP and Server 2003, open //My Network Places// in Windows Explorer and double click //Add a Network Place//.{{Windows%20Add%20Network%201.png}}
# Select "Choose another network connection" and click //Next//.{{Windows%20Add%20Network%202.png}}
# Enter the WebDAV URL and click //Next//.  Enter credentials when prompted.{{Windows%20Add%20Network%203.png}}

==== Windows 98 ====
# Using Windows Explorer go to the menu option "Web Folder...".
# Introduce the WebDAV URL and click enter.

=== Linux ===
==== Konqueror (KDE) ====
#Change the protocol of the URL so that instead of http://... it says webdav://...
#Write the URL in the location bar and click enter.

==== Nautilus (GNOME) ====
#Change the protocol of the URL so that instead of http://... it says dav://... (davs://... when your site is using SSL).//
#Write the URL in the location bar and click enter.

=== Mac OS X ===
#In the //Finder// select the menu Go-&gt;Connect to Server.{{OS%20X%201.png}}
#Type the address of the WebDAV server in the Server Address field and click "Connect".  Enter credentials when prompted.{{OS%20X%202.png}}

== Known Issues ==
=== General ===
* When viewing folders in the Document Library, files exist beginning with "._" (e.g., "._test.txt").  This is due to the implementation of OS X's WebDAVFS client.  OS X creates a resource fork for every file it creates or modifies, storing it in a file that has a name prepended with "._".  Though this is invisible on OS X, most other clients (including the Document Library portlet) display this file as present.  Deleting this file will not cause any harm but will be regenerated when OS X finds the need to do so.
* If you are using TortoiseSVN or TortoiseGIT, it will constantly query the WebDAV for .svn or .git folders.  To skip the checks against these folders, add to your portal-ext.properties: webdav.ignore=.svn,.git
*Setting GMT timezone on your application server may be critical! When **user.timezone** property is not set, application servers detect timezone from locale. During the communication with the WebDav client, all times will be sent in detected timezone (like CET). Some WebDav clients (like Windows7) don't handle timezones correctly, and expect the GMT.

=== Windows ===

|=Problem |=Version of Windows |= MS KB|= Patch|
|MS Hotpatch required for WebDAV to work on various versions of Windows.|XP, Vista, Server 2003|[[http://support.microsoft.com/kb/892211| KB892211]], [[[[http://support.microsoft.com/kb/907306|http://support.microsoft.com/kb/907306]]|KB907306]]|[[http://www.microsoft.com/downloads/details.aspx?FamilyId=17C36612-632E-4C04-9382-987622ED1D64&amp;displaylang=en|Webfldrs-KB907306-ENU.exe]]|
|Error message of invalid folder when URL has a %20 in it.  Replace all %20 strings with a single space " ".|various |[[http://support.microsoft.com/kb/888039| KB888039]]|
|Getting "The folder name is not valid." error on Liferay 6.04 or below.  This is due to the new requirement of Vista/7  for WebDAV to use Digest authentication.  Workaround in KB notes.|Vista, 7|[[http://support.microsoft.com/kb/928692|KB928692]]|[[http://issues.liferay.com/browse/LPS-10606%20| LPS-10606]]|
|Move or copy of folders in Explorer returns an "Error 0x80070021: The process cannot access the file because another process has locked a portion of the file."|Vista, 7|[[http://issues.liferay.com/browse/LPS-12080|LPS-12080]]|
| You experience a long delay when you try to access files on Liferay's WebDAV.|Vista, Server 2003|[[http://support.microsoft.com/kb/945435|KB945435]]|[[http://www.microsoft.com/downloads/details.aspx?FamilyId=6725DA2E-AFA9-4246-A5B3-3C4F8F3290E9| Windows6.0-KB945435-x86.msu]], [[[[http://www.microsoft.com/downloads/en/details.aspx?FamilyId=16A8648C-8213-453F-B0E6-5A539FD28C7A&amp;displaylang=en|http://www.microsoft.com/downloads/en/details.aspx?FamilyId=16A8648C-8213-453F-B0E6-5A539FD28C7A&amp;displaylang=en]]|Windows6.0-KB945435-x64.msu]]|
| You receive a folder copy error message when you try to download a file larger than 50MB.  You may also get an error 0x800700DF. |XP, Vista|[[http://support.microsoft.com/kb/900900|KB900900]]|
| On "Open in Office" link in IE, user is presented with the error message "Cannot open the requested document due to the following reason: Automation server can't create object."|64-bit Windows|[[http://technet.microsoft.com/en-us/library/cc263526(v=office.14).aspx#activex|Technet Library]]|[[http://issues.liferay.com/browse/LPS-28718|LPS-28718]]|</description>
      <pubDate>Thu, 02 May 2013 15:44:36 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;WebDAV</guid>
      <dc:creator>Alexander Chow</dc:creator>
      <dc:date>2013-05-02T15:44:36Z</dc:date>
    </item>
    <item>
      <title>5 Secrets to Making Print Cartridges Last Longer 1.1 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;5+Secrets+to+Making+Print+Cartridges+Last+Longer</link>
      <description />
      <pubDate>Wed, 01 May 2013 12:18:29 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;5+Secrets+to+Making+Print+Cartridges+Last+Longer</guid>
      <dc:creator>Ray Augé</dc:creator>
      <dc:date>2013-05-01T12:18:29Z</dc:date>
    </item>
    <item>
      <title>BugSquad - Liferay Portal 6.2 CE Milestone 5 Testing 1.3 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;BugSquad+-+Liferay+Portal+6.2+CE+Milestone+5+Testing</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== Introduction ==

Liferay has released the fifth milestone build of the next version of Liferay. This milestone includes most if not all of the bug fixes based on the feedback from the bug squad in previous milestones, as well as several new features. See below for a list of new features and bugs fixed in this Milestone.

== Goals of this Milestone ==

With this milestone, we are getting closer to a first Beta release of Liferay Portal 6.2. BugSquad has been instrumental in improving the milestones up to this point, and the release and development teams need your help once more!


With Milestone 5, we are specifically looking for:

* Bugs (of course!)
* Functionality quirks or small improvements to features


Ideas for new features are always encouraged, but keep in mind that to maintain high quality and the ability to release a solid product, large-scale changes and new features will likely have to wait until after the 6.2 release. Most important now is to look at the existing feature set and see if there are small improvements things you dislike that can be fixed prior to Beta. 

== Downloads ==

To obtain the Milestone 5 build, download one or more bundles:

*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.0%20M5/liferay-portal-tomcat-6.2.0-ce-m5-20130423145603490.zip/download|Tomcat Bundle]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.0%20M5/liferay-portal-glassfish-6.2.0-ce-m5-20130423145603490.zip/download|GlassFish Bundle]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.0%20M5/liferay-portal-src-6.2.0-ce-m5-20130423145603490.zip/download|Source Code Bundle]]
*[[http://github.com/liferay/liferay-portal|Source Code Repository]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.0%20M5/liferay-portal-doc-6.2.0-ce-m5-20130423145603490.zip/download|Javadoc and other documentation]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.2.0%20M5/|Other files]] (Includes other app server builds like JOnAS or Resin, standalone WAR files, dependency JARs, etc)

== Features ==

These are some of the new features included in Milestone 5 that you may be interested in testing.  As usual, Liferay is using a JIRA Structure to visualize new features ("Stories") in each Milestone.  You can see the [[http://issues.liferay.com/browse/STRUC-565|Milestone 5 Stories]], or visit [[http://issues.liferay.com/secure/StructureBoard.jspa?s=156|the overview of Stories for all Milestones]].

=== Developer ===
*[[http://issues.liferay.com/browse/LPS-34603|LPS-34603]]	Enhance JavadocManagerUtil to also show comments for a class.
*[[http://issues.liferay.com/browse/LPS-34160|LPS-34160]]	As a developer, I wish to flag certain service methods to bypass AccessControl checks
*[[http://issues.liferay.com/browse/LPS-33847|LPS-33847]]	Update Eclipse files to use *-master vs *-trunk nomenclature to fit better with Git vs Svn
*[[http://issues.liferay.com/browse/LPS-33682|LPS-33682]]	As a developer, I would like to have one activity interpreter per type of entity
*[[http://issues.liferay.com/browse/LPS-33455|LPS-33455]]	As a customization developer I'd like the custom field taglibs to be more extension friendly
*[[http://issues.liferay.com/browse/LPS-33194|LPS-33194]]	Enhance JSONWebService Invoker: allow usage of inner properties
*[[http://issues.liferay.com/browse/LPS-32200|LPS-32200]]	As a Liferay Marketplace Developer, it should be less time consuming and less error prone to identify and declare necessary PACL declarations
*[[http://issues.liferay.com/browse/LPS-31545|LPS-31545]]	As a Liferay portal developer, I want to be able to enable or disable WorkflowThreadLocal for tests that need to
*[[http://issues.liferay.com/browse/LPS-31396|LPS-31396]]	As a developer I should be able to reuse CSS rules along the portal
*[[http://issues.liferay.com/browse/LPS-33277|LPS-33277]]	As a Portlet Developer, I want to be able to generate portlet URLs in the activitiy feed of my entities
*[[http://issues.liferay.com/browse/LPS-34537|LPS-34537]]	As a tools developer, I would like to be able to call ServiceBuilder multiple times using same JVM process
*[[http://issues.liferay.com/browse/LPS-34489|LPS-34489]]	As a platform deployer it would be ideal to have a choice to include PACL security or not
*[[http://issues.liferay.com/browse/LPS-32048|LPS-32048]]	As a developer I would like to see far less noise during test suite execution

=== Site Administrator ===
*[[http://issues.liferay.com/browse/LPS-33741|LPS-33741]]	As a site admin I can add more than one Media Gallery portlet to a page
*[[http://issues.liferay.com/browse/LPS-31740|LPS-31740]]	As a site administrator I can check the status of propagation for for page / site templates and request propagation explicitly when necessary
*[[http://issues.liferay.com/browse/LPS-34341|LPS-34341]]	Unify all site related options in the Manage menu of the dockbar into one
*[[http://issues.liferay.com/browse/LPS-33872|LPS-33872]]	As a site administrator I want users to be a member of a site only if they are member of the parent site
*[[http://issues.liferay.com/browse/LPS-32842|LPS-32842]]	Improve the performance of site templates propagation for sites with a large number of pages
*[[http://issues.liferay.com/browse/LPS-32698|LPS-32698]]	A site admin should be capable of browsing, editing, deleting and adding DDM Structures and DDM Templates via WebDav
*[[http://issues.liferay.com/browse/LPS-29499|LPS-29499]]	As a Site Administrator I can display content from other sites through Asset Publisher
*[[http://issues.liferay.com/browse/LPS-28993|LPS-28993]]	As a site administrator I have a UI to visualize the embedded portlets in a page and manage their preferences

=== Portal Administrator ===
*[[http://issues.liferay.com/browse/LPS-34383|LPS-34383]]	As a Liferay administrator, in Control Panel, Server / Server Administration, Properties, Portal Properties, I can see the database value of a property, if present
*[[http://issues.liferay.com/browse/LPS-34540|LPS-34540]]	As a portal admin I can configure the default landing page (after login) to be a page in either the user's public or private pages.
*[[http://issues.liferay.com/browse/LPS-33512|LPS-33512]]	As a system administrator I can configure Liferay to use strong encryption to increase protection of the impersonate and remember me features
*[[http://issues.liferay.com/browse/LPS-33511|LPS-33511]]	As a system administrator I can make Liferay use strong encryption for passwords stored in the db
*[[http://issues.liferay.com/browse/LPS-34599|LPS-34599]]	By default enable only the 7 supported languages in a Liferay installation.
*[[http://issues.liferay.com/browse/LPS-33295|LPS-33295]]	PACL - Allow PACL to be totally disabled with no runtime cost

=== WCM / Content Admin ===
*[[http://issues.liferay.com/browse/LPS-34295|LPS-34295]]	As a developer I would like to handle all the export/import related path methods in one place
*[[http://issues.liferay.com/browse/LPS-33743|LPS-33743]]	As a web content creator I want the fields of my structures indexed by default (so that I can search, filter and sort by them in asset publisher)
*[[http://issues.liferay.com/browse/LPS-30818|LPS-30818]]	Add Application Display Templates support for Media Gallery
*[[http://issues.liferay.com/browse/LPS-29946|LPS-29946]]	Apply Recycle Bin to Bookmarks
*[[http://issues.liferay.com/browse/LPS-28319|LPS-28319]]	Application Display Templates Refinements
*[[http://issues.liferay.com/browse/LPS-33267|LPS-33267]]	Apply the Staged Model pattern to Polls and Polls Display to increase reliability, extensibility and speed of export, import and publish to live operations that involve its entities
*[[http://issues.liferay.com/browse/LPS-33089|LPS-33089]]	Apply the Staged Model pattern to Mobile Device Rules to increase reliability, extensibility and speed of export, import and publish to live operations that involve its entities
*[[http://issues.liferay.com/browse/LPS-33081|LPS-33081]]	Apply the Staged Model pattern to Message Board to increase reliability, extensibility and speed of export, import and publish to live operations that involve its entities
*[[http://issues.liferay.com/browse/LPS-33007|LPS-33007]]	As a content or application template author I can add items from a palette when writing the template code
*[[http://issues.liferay.com/browse/LPS-32843|LPS-32843]]	Apply the Staged Model pattern to Dynamic Data framework to increase reliability, extensibility and speed of export, import and publish to live operations
*[[http://issues.liferay.com/browse/LPS-32534|LPS-32534]]	Apply the Staged Model pattern to Bookmarks to increase reliability, extensibility and speed of export, import and publish to live operations that involve its entries and folders
*[[http://issues.liferay.com/browse/LPS-31965|LPS-31965]]	Improve speed of Asset Publisher dynamic lists, specially when using permissions
*[[http://issues.liferay.com/browse/LPS-33478|LPS-33478]]	As a content editor, I can see the entity I'm creating in the Asset Publisher directly when only one is available
*[[http://issues.liferay.com/browse/LPS-30961|LPS-30961]]	As a WCM Administrator, I will be able to create and edit structures and templates using the new editors from Dynamic Data Mapping (DDM)
*[[http://issues.liferay.com/browse/LPS-34438|LPS-34438]]	Make freemarker the default template language when a template is first created
*[[http://issues.liferay.com/browse/LPS-33799|LPS-33799]]	As a Template Author I can use Autocomplete and the variables pallette when authoring templates using Velocity as the language

=== Power User ===
*[[http://issues.liferay.com/browse/LPS-33224|LPS-33224]]	As a DDL user I can see the name of the entity in the portlet, instead of "Record"
*[[http://issues.liferay.com/browse/LPS-33829|LPS-33829]]	As a workflow definition creator, I would like to specify notifications to be sent to the User Notification channel in Liferay
*[[http://issues.liferay.com/browse/LPS-32285|LPS-32285]]	As a DDL administrator I will be able to create Freemarker templates using hints via AutoComplete
*[[http://issues.liferay.com/browse/LPS-33230|LPS-33230]]	As a DDL user I can edit a record from the record view

=== Framework ===
*[[http://issues.liferay.com/browse/LPS-34587|LPS-34587]]	RoleLocalServiceImpl.hasUserRole(long, long, String, boolean) should not be used for testing role existence
*[[http://issues.liferay.com/browse/LPS-33999|LPS-33999]]	Hide "Manage Rule Group Priorities" tab when there are less than two rules in mobile configuration
*[[http://issues.liferay.com/browse/LPS-33998|LPS-33998]]	Rename OS to Operating System for Device Rules
*[[http://issues.liferay.com/browse/LPS-33508|LPS-33508]]	As a core engineer I can see the percentage of the code being tested
*[[http://issues.liferay.com/browse/LPS-33429|LPS-33429]]	Include permission checking in indexer tests
*[[http://issues.liferay.com/browse/LPS-33403|LPS-33403]]	Upgrade JUnit from 4.8.2 to 4.11
*[[http://issues.liferay.com/browse/LPS-33307|LPS-33307]]	Reimplement tests for page templates and site templates
*[[http://issues.liferay.com/browse/LPS-33219|LPS-33219]]	Upgrade to Jodd v3.4.2: enhanced type conversions
*[[http://issues.liferay.com/browse/LPS-33162|LPS-33162]]	Standardize Interface / Impl / Util pattern so that all Constants are in the Interface and not in the Util
*[[http://issues.liferay.com/browse/LPS-33132|LPS-33132]]	Cobertura load time instrumenting support
*[[http://issues.liferay.com/browse/LPS-33129|LPS-33129]]	Update log4J to version 1.2.17 (from 1.2.16) and change the PatternLayout to EnhancedPatternLayout
*[[http://issues.liferay.com/browse/LPS-31720|LPS-31720]]	Improve Journal API and db model to use the same terminology for templates and structures as in DDM
*[[http://issues.liferay.com/browse/LPS-31558|LPS-31558]]	Fix tests that are using SocialActivity framework
*[[http://issues.liferay.com/browse/LPS-31208|LPS-31208]]	Centralize the permission logic that checks for permission to access Control Panel applications
*[[http://issues.liferay.com/browse/LPS-30019|LPS-30019]]	As a code reviewer all the pull request I receive should have been automatically tested
*[[http://issues.liferay.com/browse/LPS-25995|LPS-25995]]	Upgrade testing framework to Selenium 2
*[[http://issues.liferay.com/browse/LPS-34693|LPS-34693]]	Add default IPV6 config of cluster.
*[[http://issues.liferay.com/browse/LPS-33416|LPS-33416]]	Improve internal conversions of jsonws invoker
*[[http://issues.liferay.com/browse/LPS-32259|LPS-32259]]	Add different strategies for non-serializable wrapping on weblogic
*[[http://issues.liferay.com/browse/LPS-30063|LPS-30063]]	Upgrade process for calendar events

=== Collaboration / Social ===
*[[http://issues.liferay.com/browse/LPS-32964|LPS-32964]]	Link to subscribe to a content should only be displayed when sending notifications is enabled
*[[http://issues.liferay.com/browse/LPS-31852|LPS-31852]]	As an user I should be able to categorize a calendar resources
*[[http://issues.liferay.com/browse/LPS-28679|LPS-28679]]	A user must be able to search for a folder by name within Document Library, Bookmarks and Web Content administration
*[[http://issues.liferay.com/browse/LPS-34493|LPS-34493]]	As a user, I would like to refresh the captcha image when it is unclear
*[[http://issues.liferay.com/browse/LPS-33003|LPS-33003]]	Show the gist when the result of search is an attachment
*[[http://issues.liferay.com/browse/LPS-32727|LPS-32727]]	An user can edit the details of a calendar event, make comments to it and rate it
*[[http://issues.liferay.com/browse/LPS-26751|LPS-26751]]	Open Social gadgets deployed to other gadget containers looking to leverage Liferay web services should authenticate via OAuth.

=== Misc ===
*[[http://issues.liferay.com/browse/LPS-34326|LPS-34326]]	Inline mappingtable's _SQL_CONTAINS sql for consistency
*[[http://issues.liferay.com/browse/LPS-34170|LPS-34170]]	Refactor FinalizeManager to remove the dependency

== Bugs Fixed ==

[[http://issues.liferay.com/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+LPS+AND+issuetype+in+%28Bug%2C+%22Regression+Bug%22%29+AND+fixVersion+%3D+%226.2.0+CE+M5%22+AND+status+in+%28Resolved%2C+Closed%29+and+resolution+in+%28Completed%2C+Fixed%29++ORDER+BY+created+ASC%2C+priority+DESC|You can view the list of bugs fixed in this Milestone here.]]

== Known issues and limitations ==

TBD - Will be filled in as issues are identified.

== How to report bugs and suggestions ==
* Bugs: [[http://issues.liferay.com/secure/CreateIssue.jspa?pid=10952&amp;issuetype=1&amp;Create=Create|Create bugs]] in JIRA making sure you fill the field *"Affects Version" specifying the value 6.2.0 CE M5*. 
** Important: Please make sure you review the list of [[http://issues.liferay.com/secure/IssueNavigator.jspa?reset=true&amp;jqlQuery=project+%3D+LPS+AND+issuetype+in+%28Bug%2C+%22Regression+Bug%22%29+AND+affectedVersion+%3D+%226.2.0+CE+M5%22+AND+status+in+%28Resolved%2C+Closed%29+and+resolution+in+%28Completed%2C+Fixed%29++ORDER+BY+created+ASC%2C+priority+DESC|bugs reported for Milestone 5]] before reporting a new one.
* Suggestions: post your idea on the new [[http://liferay.com/community/ideas|Community Ideas Dashboard!]].


The developers working on 6.2 will be monitoring the reported bugs and suggestions to provide timely answers.

== Where are the plugins? ==

Any plugins that should be tested with the milestone (if any) are included in the bundles by default, but are not built separately.

=== Building Portal and Plugins Manually ===

If you are interested in trying out any of the open source plugins with this Milestone (for example, to see if a bug still exists in a plugin), you can build them yourself.  Here is an example that should work on Unix/Linux/MAC (Windows developers can easily translate this to their own tool chain).  This will download the portal source code and plugins source code, build the portal, and build the knowledge-base-portlet (as an example), and deploy it to the newly-created portal, and finally start it up.

{{{
$ mkdir /tmp/foo
$ cd /tmp/foo
$ wget --output-document=portal.zip --no-check-certificate https://github.com/liferay/liferay-portal/archive/6.2.0-m5.zip
$ wget --output-document=plugins.zip --no-check-certificate https://github.com/liferay/liferay-plugins/archive/6.2.0-m5.zip
$ mkdir bundles
$ unzip -q portal.zip
$ unzip -q plugins.zip
$ cd liferay-portal-6.2.0-m5
$ ant -f build-dist.xml unzip-tomcat
$ ant all
$ cd ../liferay-plugins-6.2.0-m5/portlets/knowledge-base-portlet
$ ant deploy
$ /tmp/foo/bundles/tomcat-7.0.34/bin/startup.sh
$ tail -f /tmp/foo/bundles/tomcat-7.0.34/logs/catalina.out
}}}</description>
      <pubDate>Mon, 29 Apr 2013 15:36:39 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;BugSquad+-+Liferay+Portal+6.2+CE+Milestone+5+Testing</guid>
      <dc:creator>James Falkner</dc:creator>
      <dc:date>2013-04-29T15:36:39Z</dc:date>
    </item>
    <item>
      <title>m2e-liferay - early access 1.7 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;m2e-liferay+-+early+access</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== Introduction ==

One of the oldest outstanding feature requests for Liferay IDE is support for maven projects.  Specifically people who use maven to build their Liferay plugins want to be able to also use Liferay IDE to work with those plugins.  In the past this has not been possible because Liferay IDE only worked with plugins built with the Liferay Plugins SDK.  One of the big new features in upcoming Liferay IDE 2.0 is maven support.  Because of the amount of new changes required to properly support Maven we plan on releasing several milestones of Liferay IDE 2.0 prior to the final 2.0 release sometime this summer.  But even before we feel comfortable in releasing 2.0.0-Milestone-1 version of Liferay IDE we wanted to send out an early-access build of the IDE that contains the new maven support to some interested early adopters, you! :)  It would be really helpful if you are able to download the EA build of Liferay IDE, install it and give it a try in your own environment where you work on Liferay maven plugins.

== Background ==

Liferay developers that would like to use Maven to build their Liferay plugin projects can use a various of maven related mojo-plugins.  However, the official Liferay supported way, specifically for plugins projects (only plugin projects, general portal is not included) is to use a the liferay-maven-plugin mojo for building/deploying plugins.  For creating new liferay maven-plugin projects, several liferay plugin type maven archetypes all available in maven plugin central.  Each of these liferay maven archetypes will add the liferay-maven-plugin in the pom.xml build plugin configuration section.  Most of the Liferay plugins are just war packages with the liferay-maven-plugin added to their configuration sections.  

== Liferay IDE Support ==

In order to properly support these types of projects in Liferay IDE, we first need a mechanism to recognize these projects as Liferay IDE projects.  Liferay IDE projects are recognized in Eclipse as faceted web projects that include the appropriate Liferay plugin facet.  Therefore all liferay IDE projects are also Eclipse web projects (faceted project with web facet installed).  First, in order to get maven projects to be recognized by Eclipse and work with the other JEE tooling, such as the Servers view, they must be flexible web projects as well.  So in order to facilitate both of these requirements (flexible web projects with liferay facet installed), m2e-liferay requires these additional Eclipse plugin dependencies.

* m2e-core (Maven integration for Eclipse)
* m2e-wtp (Maven integration for WTP)


First m2e-core is the standard Maven tooling support for Eclipse and is available from Eclipse.org web site as a plugin.  The main benefits it provides is dependency resolution classpath management and also abstract project configuration framework for adopters.  Secondly, in order for the Liferay projects using maven to be recognized as flexible web projects, we must use another plugin from Eclipse, the m2e-wtp.  This provides a project configuration mapping between the war package types POMs in maven model to the flexible web project support in Eclipse.  With this in place, the only remaining piece to make Liferay maven plugins first-class Eclipse citizens is making sure that m2e-core can recognize the extra lifecycle metadata mappings that are required to support the custom liferay:xyz goals in the liferay-maven-plugin mojos.  In the latest release, m2e-core plugin requires that it be explicitly told how to integrate plugins such as liferay-maven-plugin that contribute goals to the standard build lifecycle, via a liferay-metadata-execution mapping.  Normally Eclipse m2e-core users would have to specify these manually themselves.  However, the m2e-liferay plugin we have now created, automatically provides this mapping saving the user from having to do anything to their project configuration.  Also we can provide m2e-core  with additional build participation in order to make sure that Liferay maven plugins are handled properly in the Eclipse build lifecycle.  (e.g. making sure that liferay:build-css is called for theme deployments, etc).

== Using m2e-liferay ==
=== Installation ===
# First download the 2.0.0 Early Access build [[http://ftp.liferay.com/Liferay_IDE_2.0.0.201304080855-EA1-updatesite.zip|update-site here]]. 
# Next install the m2e-liferay feature (this requires m2e-core and m2e-wtp as dependencies).  However, the dependent features have been automatically provided in our zipped update-site, that is why its 21MB now :)
# If you already have m2e-core or m2e-wtp installed, you may be prompted for upgrading to the latest m2e-core (1.3.x) and m2e-wtp (0.17.x).

=== m2e-core project configurators ===

Here I need to give you a quick note about m2e-core project configurators.  Any time the user's maven project configuration changes in any way (project import, pom.xml change, manually executed), m2e-core will perform some basic configuration of any maven project (turning pom.xml into .project and .classpath).  But at the end of this process it will also execute all registered project configurators.  These project configurators extend the m2e-core import process to materialize the maven object model into a working Eclipse project (transfer metadata from pom.xml to .settings/*).  m2e-liferay contributes a new project configurator that will try to recognize Liferay maven plugin projects and properly configure them as Liferay IDE Projects (flexible web projects that have liferay plugin facets installed).  Also, users can create new maven project using the liferay-*-archetypes form maven central.  But this really just repeats the import process.  First m2e-core will delegate to maven to create the project from the archetype and then it will automatically start the project configurator transformation process.

=== Liferay Project update ===

Once everything is installed, the first thing is to try to get your Liferay maven plugins recognized as Liferay IDE projects.  The next steps you need to do depend on how your existing Liferay Maven plugin is configured.

* Liferay project is already Eclipse flexible web project (m2e-wtp is already installed and has configured the web facet on your project)
In this case you simply need to just re-run the Maven update project action to re-run the m2e-core project configuration process.  Right-click your Liferay project, choose Maven &gt; Update project...
* Liferay project is open in Eclipse but it isn't a maven project in Eclipse (m2e nature).
In this case you need to re-import your project into Eclipse just like for the first time.  First delete your existing project from Eclipse (Don't delete the contents from disk!).  Then use the Maven Import wizard, File &gt; Import &gt; Maven &gt; Existing maven project into workspace)
* You don't have your project in Eclipse at all.
In this case simply run the Maven import project wizard for the first time, File &gt; Import &gt; maven &gt; existing maven project into workspace

=== m2e-liferay project configuration ===

No matter which method above you used to configure your Liferay maven plugin, eventually m2e-core will delegate project configuration of your Liferay maven plugin to the m2e-liferay project configurator.  First the m2e-wtp project configurator will execute which will convert your Liferay war package into an Eclipse flexible web project.  Next, the m2e-liferay configurator will execute and first it is going to look for the liferay-maven-plugin to be registered on the pom effective model for war type packages.  If no liferay-maven-plugin is configured on the effective pom for the project, then the project configuration will not continue.  If the liferay-maven-plugin has been specified, the following settings must be specified:

* pluginType
* liferayVersion
* autoDeployDir
* appServerDeployDir
* appServerLibGlobalDir
* appServerPortalDir


In m2e-core there are various ways to satisfy specifying these properties.  In the pom.xml directly, in a parent pom, or in a maven profile.  Once you have a maven profile configured (in settings.xml) you can active this profile in m2e-core property page.  
Right-click on project -&gt; properties, go to maven, in the profiles textfield, type in the profiles ids that supply the necessary settings.


Once all of these values are specified the m2e-liferay configurator will double check to make sure the values for all of these settings point to valid values (make sure if it points to a directory that it actually exists, etc).  If the configurator finds any errors it will mark the user's pom.xml with errors.  If you need to fix one of the values, to update it to valid value, then you can re-run the project configuration process by right-clicking project, maven &gt; update project....

=== Project Updated ===

After your pom configuration meets the requirements, the m2e-liferay configurator will install the Liferay plugin facet, and congratulations, now your project is a full-fledged Liferay IDE project.  Which means that all wizards, editors, etc will work as expected!  Also, now you can drag-n-drop to publish your project to the Liferay Portal servers in the servers view.  


There is no specific new Liferay project wizard for maven yet, however, you can use the existing New Maven Project wizard and specify the Liferay plugin archetype and once the underlying maven project has been created, then the project configurators will execute including m2e-liferay.  However, in most cases these new projects wont yet meet all the configuration requirements (appServerXYZ settings haven't been specified yet), so you will have to update them and then re-run the Maven &gt; Update project action.

== Known Issues ==

With this Early Access build there are several known issues related to m2e-liferay plugin:

# Publishing theme deployments using Server publishing mechanims don't work
# Selecting hook properties in New Hook Wizard doesn't work with maven-based projects
# Ext archetype deployment is not yet supported through server publishing mechanimsm</description>
      <pubDate>Mon, 29 Apr 2013 14:10:26 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;m2e-liferay+-+early+access</guid>
      <dc:creator>Gregory Amerson</dc:creator>
      <dc:date>2013-04-29T14:10:26Z</dc:date>
    </item>
    <item>
      <title>Translation Team 13.3</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Translation+Team</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;


This page lists all the community members that help out with the translation of Liferay to different languages. We are all very thankful to all of them:

= Languages =

 In strict alphabetical order:

== Arabic (ar) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=7212821&amp;t=1319451400802}}

[[http://www.liferay.com/web/wolfateh/profile|Fateh Alchhabi]]

**Contributor**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=10702714&amp;t=1341578902390}}

[[http://www.liferay.com/web/arasswad/profile|Abdoulrahman Asswad]]

== Basque (eu) ==

**Leaders**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=3383355&amp;t=1245829274637}}

[[http://www.liferay.com/web/asier/profile|Asier del Pozo]],

{{http://cdn.www.liferay.com/image/user_portrait?img_id=1998192&amp;t=124297858768}}

[[http://www.liferay.com/web/karriaga/profile|Joseba Koldobika Arriaga]]


Contributors:

* Ainhoa Etxeberria
* Ane Armendariz
* Eneko Zabala
* Iñigo Rodriguez
* Iker Mendoza
* Sergio García
* Xabier Ametzazurra
* Marcos Castro
* Mikel Goikoetxea

== Bulgarian (bg) ==

** Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=6626058&amp;t=1324368724044}}

[[http://www.liferay.com/web/iliyan.peychev/profile|Iliyan Peychev]]

**Contributors:**

*[[http://www.liferay.com/web/iordannalbantov/profile|Yordan Nalbantov]]
*[[http://www.liferay.com/web/iva.mineva/profile|Iva Mineva]]

== Catalan (ca) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=3165084&amp;t=1358487554670}}

[[http://www.liferay.com/web/luiscmas/profile|Luis Mas]]

**Contributors**:

*[[http://www.liferay.com/web/jtusetma/profile|Josep Maria Tuset ]]

== Chinese (zh_CN) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_female_portrait?img_id=11174779&amp;t=1325699572456}}[[http://www.liferay.com/web/monica.li/profile|]]

[[http://www.liferay.com/web/monica.li/profile|Monica Li]]

**Contributors**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=211366&amp;t=1304397955639}}[[http://www.liferay.com/web/arcko/profile|]]

[[http://www.liferay.com/web/arcko/profile|Arcko Duan]]

[[http://www.liferay.com/web/mahipal|Mahipalsinh Rana]]

== Chinese (zh_TW) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=9982181&amp;t=1314774017992}}

[[http://www.liferay.com/web/arcane/profile|Arcane Huang]]

== Croatian (hr_HR) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=1408332&amp;t=1306746938103}}[[http://www.liferay.com/es/web/27746/profile|]]

[[http://www.liferay.com/es/web/27746/profile|Igor Beslic ]]

== Czech (cs_CZ) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=146662&amp;t=1241500009864}}[[http://www.liferay.com/web/146511/profile|]]

[[http://www.liferay.com/web/146511/profile|Artur Linhart ]]

**Contributors:**

{{http://cdn.www.liferay.com/image/user_portrait?img_id=1358732&amp;t=1251788376008}}[[http://www.liferay.com/web/moob/profile|]]

[[http://www.liferay.com/web/moob/profile|Milan Jaroš]]

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=2190501&amp;t=1312364698672}}[[http://www.liferay.com/web/topolik/profile|]]

[[http://www.liferay.com/web/topolik/profile|Tomas Polesovsky]]

** Resources: **

*[[http://www.liferay.com/community/wiki/-/wiki/Main/Czech+translation+co-ordination+wiki+page|Czech Translation Coordination]]

== Danish (da) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=10546139&amp;t=1326199028036}}

[[http://www.liferay.com/es/web/jonas.fonseca/profile|Jonas Fonseca]]

== Dutch (nl) ==

**Leader**: 

{{http://cdn.www.liferay.com/image/user_portrait?img_id=8190562&amp;t=1302383699739}}[[http://www.liferay.com/es/web/marcella|]]

[[http://www.liferay.com/web/marcella|Marcella van den Berg]]

{{http://cdn.www.liferay.com/image/user_portrait?img_id=128024&amp;t=1232038343471}}[[http://www.liferay.com/web/corne/profile|]]

[[http://www.liferay.com/web/corne/profile|Corné]]


Contributors:

* Wieteke den Uijl
* Dimitri Timischenko
* Ruud Kluivers

== Persian (fa) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=249477&amp;t=1304409697829}}[[http://www.liferay.com/es/web/banafshe/profile|]]

[[http://www.liferay.com/web/banafshe/profile|Banafshe Bamdad]]

== Finnish (fi) ==

**Leaders**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=127986&amp;t=1232105179205}}

[[http://www.liferay.com/web/mikakoivisto/profile|Mika  Koivisto]]

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=1886363&amp;t=1321862233698}}[[http://www.liferay.com/web/sampsa/profile|]]

[[http://www.liferay.com/web/sampsa/profile|Sampsa Sohlman]]

**Contributors**:

[[http://www.liferay.com/web/petteri.karttunen/profile|Petteri Karttunen]]

[[http://www.liferay.com/web/ilkka.kiistala/profile|Ilkka Kiistala]]

[[http://www.liferay.com/web/tkulmala/profile|Tero Kulmala]]

[[http://www.liferay.com/web/esa.lahikainen/profile|Esa Lahikainen]]

[[http://www.liferay.com/web/markus.puljula/profile|Markus Puljula]]

== French (fr) ==

**Leaders**: 

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=9415505&amp;t=1319803512173}}[[http://www.liferay.com/web/leo.pratlong/profile|]]

[[http://www.liferay.com/web/leo.pratlong/profile| Leo Pratlong]]

[[http://www.liferay.com/web/leo.pratlong/profile|]]{{http://cdn.www.liferay.com/image/user_portrait?img_id=6842826&amp;t=1295353069076}}

[[http://www.liferay.com/web/maxime.chambreuil/profile|Maxime Chambreuil]]

**Contributors**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=6279225&amp;t=1295352868895}}[[http://www.liferay.com/web/swerlen/profile|]]

[[http://www.liferay.com/web/swerlen/profile|Sven Werlen]]

{{http://cdn.www.liferay.com/image/user_portrait?img_id=1473710&amp;t=1232047143034}}[[http://www.liferay.com/web/bpinel/profile|]]

[[http://www.liferay.com/web/bpinel/profile|Bertrand Pinel]]

== Galician (gl) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=128061&amp;t=1272630515535}}[[http://www.liferay.com/web/28316/profile|]]

[[http://www.liferay.com/web/28316/profile|Borxa Varela Bouzas]]

**Contributor**:

[[http://www.liferay.com/web/ingmau00/profile|Miguel Alvarez Ubeda]]

== German (de) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=717378&amp;t=1232039086524}}[[http://www.liferay.com/web/tok/profile|]]

[[http://www.liferay.com/web/tok/profile|Tobias S. Käfer]]

**Contributors**:

*Daniel Weisse
*Thomas Khaipi
*[[http://www.liferay.com/web/okock/profile|Olaf Kock]]
*[[www.liferay.com/web/iris.wilimzig|Iris Wilimzig]]

== Hebrew (iw) ==

**Contributors**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4946381&amp;t=1273500793875}}[[http://www.liferay.com/web/ramigg/profile|]]

[[http://www.liferay.com/web/ramigg/profile|Rami Grossman]]

== Greek (el) ==

**Leader**:

[[http://www.liferay.com/web/avarvit/profile|Angelos Varvitsiotis]]

== Hindi (hi) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=849841&amp;t=1266828155069}}[[http://www.liferay.com/web/manish.gupta/profile|]]

[[http://www.liferay.com/web/manish.gupta/profile|Manish Gupta]]

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=17038291&amp;t=1358961519166}}[[http://www.liferay.com/web/socialgaurav|]]

[[http://www.liferay.com/web/socialgaurav|Gaurav Jain]]

**Contributors**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4225183&amp;t=1269233508506}}[[http://www.liferay.com/web/nidhi.singh/profile|]]

[[http://www.liferay.com/web/nidhi.singh/profile|Nidhi Singh]]

{{http://cdn.www.liferay.com/image/user_portrait?img_id=530175&amp;t=1267437596263}}[[http://www.liferay.com/web/zankar/profile|]]

[[http://www.liferay.com/web/zankar/profile|Zankar Shah]]

== Hungarian (hu) ==

**Leaders**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4004413&amp;t=1264063103017}}[[http://www.liferay.com/web/zsolt.balogh|]]

[[http://www.liferay.com/web/zsolt.balogh|Zsolt Balogh]],

{{http://cdn.www.liferay.com/image/user_portrait?img_id=2132240&amp;t=1254985837570}}[[http://www.liferay.com/web/muge/profile|]]

[[http://www.liferay.com/web/muge/profile|László Fülöp]]

== Indonesian (id) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=5074535&amp;t=1300706614265}}[[http://www.liferay.com/es/web/tiur/profile|]]

[[http://www.liferay.com/web/tiur/profile|Tiur LG]]

== Italian (it) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4772175&amp;t=1272276630640}}[[http://www.liferay.com/web/luca.preziati/profile|]]

[[http://www.liferay.com/web/luca.preziati/profile|Luca Preziati]]

**Contributors**:

*[[http://www.liferay.com/web/dnprossi/profile| Davide Rossi]]
*[[http://www.liferay.com/web/denis-signoretto/profile|Denis Signoretto]]
*[[http://www.liferay.com/web/marco.dussin/profile|Marco Dussin]]
* Mauro Mariuzzo
* Francesco Gabbanini
* Roberto Gasdia

**Resources**:

*[[http://www.liferay.com/community/wiki/-/wiki/Main/Italian+translation+co-ordination+wiki+page|Italian Translation Coordination]]

== Japanese (ja) ==

**Leader**:

[[http://www.liferay.com/web/teru|Terunao Nakura]]

**Contributors**:

*[[http://www.liferay.com/web/mahipal|Mahipalsinh Rana]]
*[[http://www.liferay.com/web/to2y|Takeshi Totani]]
*[[http://www.liferay.com/web/mryoshio|Ashitaba Yoshioka]]

== Lao (lo) ==

**Leader:**

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=127905&amp;t=1324365178738}}[[http://www.liferay.com/es/web/trivssic/profile|]]

[[http://www.liferay.com/es/web/trivssic/profile|Trí Ð?c Võ]]

**Contributors**:

*[[http://www.liferay.com/web/omdala.1|Phoutsala Omdala]]

== Norwegian (nb) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=12757996&amp;t=1336053566445}}

[[http://www.liferay.com/web/brendan.johan.lee/profile|Brendan Johan Lee]]

[[http://www.liferay.com/community/user-groups/norway/welcome/-/wiki/Main/Norsk+Oversettelse | Discussion regarding Norwegian Translations and common Norwegian Terminology]] on the [[http://www.liferay.com/community/user-groups/norway/welcome/-/wiki/Main/Norsk+Oversettelse | Norway User Group Wiki]]

== Polish (pl) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_female_portrait?img_id=10497694&amp;t=1314019248154}}[[http://www.liferay.com/web/joanna.wolkowska/profile|]]

[[http://www.liferay.com/web/joanna.wolkowska/profile|Joanna Wolkowska]]

**Contributors**:

* Tomasz Wojewódka
* Przemyslaw Lupinski
* Karol Fota, 
* Przemyslaw Jesionek, 
* Mariusz Nosinski, 
* Bartosz Radko, 
* Lukasz Tkacz, 
* Tomasz Pacan 


(They all had to listen to Tomasz's frequent questions 'how would you translate ...?', as he was preparing the Polish translation from scratch)

== Portuguese (Brazil) (pt_BR) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=6063780&amp;t=1338455583312}}[[http://www.liferay.com/web/fernando.garcez/profile|Fernando Garcez]]

**Contributors**:
[[http://www.liferay.com/web/tmoreira/profile|Thiago Moreira]][[http://www.liferay.com/web/339530/profile|Marcus Andrade Peixoto]]

== Portuguese (Portugal) (pt_PT) ==

**Leader**: 

[[http://www.liferay.com/web/rutepainco/profile|Rute Painco]]

**Contributors**:

[[http://www.liferay.com/web/andylovell/profile|Andrew John Lovell]]

== Romainian (ro) ==

**Leader**: 

[[http://www.liferay.com/web/robert.biter/profile|Robert Biter]]

== Russian (ru) ==

**Leader**: [[http://www.liferay.com/web/dmitry.babain/profile|]]

[[http://www.liferay.com/web/dmitry.babain/profile|Dmitry Babain]]

**Contributors**:

* Ilya Zverev

== Serbian (sr) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=8997006&amp;t=1307375235900}}[[http://www.liferay.com/es/web/krrrbato/profile|]]

[[http://www.liferay.com/web/krrrbato/profile|Vladimir Vukadinovic]]

== Slovak (sk) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=294766&amp;t=1357630739411}}[[http://www.liferay.com/web/rastorehak/profile|]]

[[http://www.liferay.com/web/rastorehak/profile|Rasto Rehak]]

**Contributors**:

*[[http://www.liferay.com/web/mouser/profile|Peter Misak]]

== Slovene (sl) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4363602&amp;t=1301405204370}}[[http://www.liferay.com/es/web/mp27/profile|]]

[[http://www.liferay.com/web/mp27/profile|Milan Palian]]

**Initial Contributors:**

[[http://www.dropchop.com|DropChop]]

== Spanish (es) ==

**Leaders**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=1083977&amp;t=1232038841726}}[[http://www.liferay.com/web/jcamarero/profile|]]

[[http://www.liferay.com/web/jcamarero/profile|Julio Camarero]],

{{http://cdn.www.liferay.com/image/user_portrait?img_id=127818&amp;t=1231985991247}}[[http://www.liferay.com/web/jferrer/profile|]]

[[http://www.liferay.com/web/jferrer/profile|Jorge Ferrer]]

== Swedish (sv) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=526418&amp;t=1256639682127}}[[http://www.liferay.com/web/bjorn-ryding/profile|]]

[[http://www.liferay.com/web/bjorn-ryding/profile|Björn Ryding]]

**Contributors**:

*[[http://www.liferay.com/web/j.drottz/profile|Jimmy Drottz]]
*[[https://www.liferay.com/web/jesperw/profile|Jesper W]]
*[[http://www.liferay.com/web/jonas.liljenfeldt/profile|Jonas Liljenfeldt]]
== Turkish (tr) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=3103122&amp;t=1242914992679}}[[http://www.liferay.com/web/canavar/profile|]]

[[http://www.liferay.com/web/canavar/profile|Fehmi Can SAGLAM]]

== Ukrainian (uk) ==

**Leader**:

{{http://cdn.www.liferay.com/image/user_portrait?img_id=4324396&amp;t=1273495252088}}

[[http://www.liferay.com/web/b.m./profile|Bo M. Maryniuk]]

== Vietnamese (vi) ==

**Leader:**

{{http://cdn.www.liferay.com/image/user_male_portrait?img_id=127905&amp;t=1324365178738}}[[http://www.liferay.com/es/web/trivssic/profile|]]

[[http://www.liferay.com/es/web/trivssic/profile|Trí Ð?c Võ]]

= How to become part of the team =

First of all: **Subscribe to the Translation Forums**. This way you will be up to date with translators.
(Go to [[http://www.liferay.com/web/guest/community/forums/-/message_boards/category/308691|this page]] and subscribe to Translations Category)


If you want to become a translator go to the [[http://www.liferay.com/web/guest/community/forums/-/message_boards/category/1925364|Translations category in the forum]] and post a message volunteering.
These are some wiki articles that you may also be interested in:

[[Translating Liferay using Pootle|Translating Liferay using Pootle]]


You are already a translator and your name isn't listed here? In that case post a message in the  [[http://www.liferay.com/web/guest/community/forums/-/message_boards/category/1925364|Translations category in the forum]]</description>
      <pubDate>Fri, 26 Apr 2013 07:03:26 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Translation+Team</guid>
      <dc:creator>Julio Camarero</dc:creator>
      <dc:date>2013-04-26T07:03:26Z</dc:date>
    </item>
    <item>
      <title>Weblogic tips 5.4</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Weblogic+tips</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== Portal on Weblogic 10.3.2 ==

Starting from recently (&gt; v6.1), portal war can not be deployed on Weblogic 10.3.2. due to usage of some new xml elements (prefer-application-packages) in weblogic.xml. It is recommended to migrate to Weblogic &gt;= 10.3.5. If you still need to deploy on Weblogic 10.3.2. do the following:


1) build portal war


2) edit weblogic.xml and use old definition header:

{{{
&lt;weblogic-web-app
	xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd"
&gt;
}}}


3) remove **prefer-application-packages** tags.


4) add **rhino.jar** to PRECLASSPATH (see below).


5) upgrade Sun Java JDK that is shipped with Weblogic 10.3.2 (see below).

== Fix Basic Authentication issue on WebLogic ==

HTTP Basic Authentication on WebLogic starting from version 9.2 (previous versions were not tested) does not work correctly. The problem is that if there is some request to your application with "Authorization" header the request will be intercepted by WebLogic itself and will not be passed to your application. WebLogic will try to make authentication itself.


Such problem can occur in your application if you are using HTTP Basic Authentication with portals SecureFilter


Add the following line in **Oracle/Middleware/user_projects/domains/&lt;domain_name&gt;/config/config.xml**, inside of **&lt;security-configuration&gt;** section.

{{{
&lt;enforce-valid-basic-auth-credentials&gt;false&lt;/enforce-valid-basic-auth-credentials&gt;
}}}
=== WebDav on Portal 5.2 ===

When WebDav Basic Auth is used (as in portal 5.2), Weblogic authenticate users
by itself and does not let the portal do the auth. This prevents Weblogic to authenticate users and pass the authentication to the portal.

== Portal with prefer-web-inf-classes ==

Note: consider using **prefer-application-packages** in weblogic.xml instead!


The **weblogic.xml** Web application deployment descriptor contains a **&lt;prefer-web-inf-classes&gt;** element (a sub-element of the **&lt;container-descriptor&gt;** element). By default, this element is set to **false**. Setting this element to **true** subverts the classloader delegation model so that class definitions from the Web application are loaded in preference to class definitions in higher-level classloaders. This allows a Web application to use its own version of a third-party class, which might also be part of WebLogic Server.


When this setting is enabled in **weblogic.xml**, the following jars has to be removed from portal **WEB-INF/lib** (jars with javax.xml package):

*      jaxrpc.jar
*      stax.jar
*      wstx.jar 
*      xml-apis.jar


Note that the author was not able to start the portal (&gt; 6.1) this way recently.


Read more about [[http://download.oracle.com/docs/cd/E13222_01/wls/docs90/programming/classloading.html|WebLogic Server Application Classloading]].

=== Plugins ===

The **prefer-web-inf-classes** element may be set to true for portal plugins, too. As for portal, sometimes it is required to remove included plugin jars (usually xml-related ones, for example: xml-apis-xxx.jar).

== prefer-application-packages ==

Starting from Weblogic 10.3.5, a new descriptor tag has been added to weblogic.xml definition: **prefer-application-packages**. This element specifies a list of packages for classes that must always be loaded from the application.
See more: [[http://docs.oracle.com/cd/E23943_01/web.1111/e13712/weblogic_xml.htm#sthref284|Oracle doc]] and [[http://docs.oracle.com/cd/E15051_01/wls/docs103/programming/app_xml.html|weblogic.xml descriptors]].


From recently portal supports Weblogic &gt;= 10.3.5 and this is the PREFERRED way how to load NEW classes.

== Using newer commons-lang.jar ==

(this heading is for existing references, please see the next paragraph for description)

== Using newer JARs ==

Portal and plugins comes with newer version of JARs than those bundled with Weblogic. However, Weblogic loads first it's own, older, JARs and not the new versions. This many be a problem when some new features of JARs are used.


Here is the list of problematic jars:

* commons-lang.jar
* antlr.jar
* mozilla jars


We have to tell Weblogic to load portal/plugin JARs from WEB-INF and not by
its original class loader. In **weblogic.xml** set **prefer-web-inf-classes** flag to **true**. This tells weblogic to load classes from web-inf folder first.

{{{
    &lt;container-descriptor&gt;
	&lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;
	...
    &lt;/container-descriptor&gt;
}}}


On weblogic 10.3.5 and later, there is even a better way for doing this, using **prefer-application-packages**, like this:

{{{
	&lt;container-descriptor&gt;
		&lt;prefer-application-packages&gt;
			&lt;package-name&gt;antlr.*&lt;/package-name&gt;
			&lt;package-name&gt;org.mozilla.*&lt;/package-name&gt;
		&lt;/prefer-application-packages&gt;
	&lt;/container-descriptor&gt;
}}}


Note: container-descriptor nested tags must follow the order defined by xsd! Validate **weblogic.xml** before starting the server.

=== Warning ===

For some web applications,  **prefer-web-inf-classes** change will not help. In that case, commons-lang jar needs to be added to the **PRE_CLASSPATH** in domain's **setDomainEnv.cmd**.

{{{
set PRE_CLASSPATH=...path...\commons-lang-2.x.jar;
}}}


Another option is to take the commons-lang.jar from Liferay WEB-INF/lib and put into the **lib/endorsed** directory of the JVM being used

== Deploying plugins manually ==

When WebLogic server is not set for automatic plugins deployment, additional themes/portlets has to be deployed manually, following these steps.

#      Invoke ant in plugins folder to compile to build the plugin war file. This war is also copied to bundles/deploy folder. Please note that this file is NOT a deployable war!
#      After few moments, portal will 'notice' the new war file, 'pick it up' and create a 'real', deployable, war.
#      In this step, portal usually tries to auto-deploy the new war. For WebLogic it means that this war file is copied to '/Oracle/Middleware/user_projects/domains/&lt;domain&gt;/autodeploy' folder. From here WebLogic should take control and continue with the plugin installation. However, if WebLogic app server is not started in development mode (or for whatever other reason), auto-deployment may not be active.
#      If autodeploy is not active, you can proceed manually and deploy that war through WebLogic administration console. Be sure that correct context path is used during deployment.

== JSF library ==

Portal might require Weblogic JSF library to be installed. It is located here:

{{{
/Oracle/Middleware/wlserver_10.3/common/deployable-libraries/jsf-1.2.war
}}}


and can be installed from Admin Console (as a library).

== Setting VM parameters ==

If, for some reason, the following doesn't work: Environment &gt; Servers &gt; AdminServer &gt; Configuration tab &gt; Server Start tab &gt; Arguments


you can set the parameters in **domains/DOMAIN_NAME/bin/setDomainEnv.cmd**. Example:

{{{
line #244:
set JAVA_PROPERTIES=-Dfile.encoding=UTF8 -Duser.timezone=GMT %JAVA_PROPERTIES% %EXTRA_JAVA_PROPERTIES%
}}}
=== Memory settings ===

Memory settings should be set differently, prior to above line. Around line #160 and dozens of line later, there are definitions for WLS_MEM_ARGS_xxBIT, MEM_ARGS_xxIT, MEM_PERM_SIZE_xxBIT, MEM_MAX_PERM_SIZE_xxBIT. There you should set memory settings, depending on your VM (sun/32bit/64bit).

== Delete weblogic domain ==

There is no tool for removing weblogic domain. You can delete the domain under $DOMAIN_HOME (i.e. user_projects) manually. Also check for the **domain-registry.xml** and for **$DOMAIN_HOME/apps/&lt;domain_name&gt;**. The config wizard will not create a new domain with the same name if **$DOMAIN_HOME/apps/&lt;domain_name&gt;** is still there. 

== EXT plugins and web.xml changes ==

Once deployed, WebLogic will NOT pick up any **web.xml** changes (made directly on deployed location). Instead, a new war needs to be recreated and redeployed.


Weblogic offers alternative solution for changing **web.xml**: using '**deployment plan**'. It is another XML file (e.g. **plan.xml**) that defines dynamic changes to be applied on various descriptors (without undeploying the application). To start with deployment plans, you can generate empty one using [[http://download.oracle.com/docs/cd/E13222_01/wls/docs90/deployment/wlplangenerator.html|plan generator]].

=== EXT plugin deployment ===

This WebLogic feature makes EXT deployment... harder. The procedure would be like this:

#      copy somewhere existing **web.xml**
#      deploy EXT plugin
#      make **plan.xml** based on differences between the new web.xml and old one
#      use **plan.xml** in administration console


However, creating **plan.xml** may not be an easy task. Therefore, another idea, or a workaround, might be:

#      deploy portal to Tomcat
#      deploy EXT plugin on Tomcat
#      build war
#      deploy war to WebLogic


Since war is built from Tomcats deployment, it will contains all EXT stuff, including the new **web.xml**.

== ClassNotFoundException: com.liferay.portal.util.PropsUtil ==

See next section.

== Deployment order ==

Standalone portal is running fine on Weblogic. However, when some portlet is deployed too, the following exception may appears during portal startup:

{{{
SEVERE: java.lang.ClassNotFoundException: com.liferay.portal.util.PropsUtil
java.lang.ClassNotFoundException: com.liferay.portal.util.PropsUtil
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at com.liferay.portal.kernel.util.MethodCache._get(MethodCache.java:110)
        at com.liferay.portal.kernel.util.MethodCache.get(MethodCache.java:62)
        at com.liferay.portal.kernel.util.MethodHandler.invoke(MethodHandler.java:79)
        at com.liferay.portal.kernel.util.MethodHandler.invoke(MethodHandler.java:75)
        at com.liferay.portal.kernel.util.PortalClassInvoker.invoke(PortalClassInvoker.java:40)
        at com.liferay.portal.kernel.util.PropsUtil.get(PropsUtil.java:32)
...
}}}


Problem is simply with deployment order: portlet gets started before the portal.


To fix this, change "Deployment Order" value for portlet (Deployments &gt; portlet &gt; Overview tab). Default value is 100. To make it start after the portal, use any number greater then 100, e.g. 900. Units with lower values are deployed before those with higher values.


=== Set portal to start early ===

It is a good practice to change default Deployment Order for the portal from 100 to e.g. 10. This is because all plugins will be deployed with order of 100. It happens that autodeployed plugins starts before portal and do not get registered. 

== Windows WebDav can't connect to portal ==

One of the reasons may be not setting the **user.timezone** to **GMT**.
 When timezone is not set, WebLogic detects the timezone from locale. 
When locale is not GMT, portal returns WebDav xml that containts dates 
in other timezones (like CET) and that does not work for some Micorosoft 
WebDav client (like Windows 7). 



Setting the proper timezone setting **based on GMT** should fix this issue.

== IndexOutOfBoundsException ==

Java 1.6-r14 that comes with Weblogic 10.3.2, has a bug with [[http://bugs.sun.com/view_bug.do?bug_id=6795561|StringCharBuffer]], that results with following exception during execution of StripFilter class:

{{{
java.lang.IndexOutOfBoundsException
	at java.nio.StringCharBuffer.subSequence(StringCharBuffer.java:92)
}}}
== Upgrading Sun JDK ==

To upgrade Sun JDK, you can simply install it over existing one ([[http://download.oracle.com/docs/cd/E14571_01/relnotes.1111/e10133/install.htm#RNLIN1735|as described in the official documentation]]). However, it might be ugly to put new version of Java (lets say 1.6.0_22) in the folder named jdk160_14.. Therefore, you can change the java reference in the following files:


.../domains/&lt;DOMAIN_NAME&gt;/bin/setDomainEnv.*


You need to setup this for each domain. This should work.

== Printing null values in JSP ==

Weblogic by default should print null values as 'null' in JSP, so the following example:

{{{
Hello: &lt;%= name %&gt;
}}}


would render as:


{{{
Hello: null
}}}


if 'name' is null. There is an option in Weblogic that can control this behavior: it is set in **weblogic.xml**, like this:

{{{
&lt;jsp-descriptor&gt;
&lt;print-nulls&gt;true&lt;/print-nulls&gt;
&lt;/jsp-descriptor&gt;
}}}

[[http://docs.oracle.com/cd/E11035_01/wls100/webapp/weblogic_xml.html|Read more here]]


Since this is a common behavior among other application servers (Tomcat, Websphere...), be sure that Weblogic is set this way! 

=== Bug with print-nulls ===

However, it seems that weblogic has a bug with this: when  null value is rendered inside the tag, it is rendered as empty string, although outside of tags is rendered as 'null', as we can see in the following example:


{{{
[&lt;%= foo %&gt;]
&lt;aui:script use="liferay-open-social-gadget"&gt;
	alert("[&lt;%= foo %&gt;]");
}}}


The first line will be rendered as 'null' but inside the tag the same null value will be rendered as an empty string.

== Enable the output of system.out.println in the log file ==

In the weblogic administraton console: Servers &gt; AdminServer &gt; Logging -&gt; General (open advanced) and check the box "Redirect stdout logging enabled".

== Performance issues ==

If portal runs very slowly (e.g. login takes several minutes) try running Weblogic server in production mode. We have reports that Weblogic v10.3.3 runs very slowly in development mode. This is not case with Weblogic v10.3.2.

== Development and Production mode ==

To change to PRODUCTION mode, follow [[http://download.oracle.com/docs/cd/E15523_01/apirefs.1111/e13952/taskhelp/domainconfig/ChangeRuntimeModes.html|the official steps]] to configure all servers in a domain to run in production mode:

*      click Lock &amp; Edit (see Use the Change Center).
*      under Domain Structure, select the domain name. 
*      Select Configuration &gt; General and select the Production Mode check box. 
*      Click Save, and then click Activate Changes. 
*      Restart


Once the mode set to PRODUCTION you cannot change it from Weblogic Console !!!


To change from production mode to development mode in Weblogic 10.3 do the following:

* Stop the servers running in a domain.
* Open the **config.xml** file location under MIDDLEWARE_HOME/domains/domain_name/config
* Change the **production-mode-enabled** entry to **false** and save the file and exit
* change the **setDomainEnv.cmd**:
{{{
set PRODUCTION_MODE=false
}}}

=== Difference between DEV and PROD ===

Development mode:

*      The default JDK for development domain is Sun Hotspot
*      You can use the demo certificates for SSL
*      Auto deployment is enabled
*      Server instances rotate their log files on startup
*      Admin Server uses an automatically created boot.properties during startup
*      The default maximum capacity for JDBC Datasource is 15
*      The debugFlag which is used to start the WebLogic Workshop Debugger is enabled


Production mode:

*      The default JDK for production domain is JRockit
*      If you use the demo certificates for SSL a warning is displayed
*      Auto deployment is disabled
*      Server instances rotate their log files when it reaches 5MB
*      Admin Server prompts for username and password during startup
*      The default maximum capacity for JDBC Datasource is 25
*      The debugFlag which is used to start the WebLogic Workshop Debugger is disabled.

== weblogic-application.xml note ==

"weblogic-application.xml" file's settings will work ONLY IF you place your jar files inside "&lt;EAR_APP&gt;\APP-INF\lib"; i.e. in ear deployment.

== *.getAttribute() and Serialization ==

Objects that need to be retrieved through the **ServletContext.getAttribute()** method need to implement the **Serializable** interface.  If they are not serializable, the exception **java.io.NotSerializableException** will be thrown.


Some of the code that ships current Apache AXIS fails because this is not the case.


Serialization also occurs on **getAttribute() ** method invoked on servlet request and session. You can control this behavior with **optimistic-serialization** option that can be set on Domain (through admin console: Domains&gt;Configuration&gt;Web Application) or in *weblogic.xml* file of web application. Read more about [[http://docs.oracle.com/cd/E15051_01/wls/docs103/webapp/weblogic_xml.html|this option here]].



Basically, when **optimistic-serialization** is set to true (not a default value) Weblogic will NOT serialize objects on getAttribute(). When sharing Session data across WebApps of a same EAR file; Weblogic primary mechanism is to rely on serialization/deserialization to avoid ClassCastException. However, this can cause some serious performance issues which is why they have an optimistic-serialization flag that can be turned ON to avoid Weblogic triggering serialization/deserialization.


However, the debug mode is causing Weblogic to “test” your Session data, triggering serialization/deserialization.  By having the Weblogic session-descriptor debug setup to true; causing Weblogic to trigger serialization/deserialization of our Session data objects.

=== Reference Material ===

 OptimisticSerialization 


When OptimisticSerialization is turned on, WebLogic server does not serialize-deserialize context and request attributes upon getAttribute(name) when a request gets dispatched across servlet contexts. This means you will need to make sure that the attributes common to Web applications are scoped to a common parent classloader (they are application-scoped) or placed in the system classpath if the two Web applications do not belong to the same application. When OptimisticSerialization is turned off (which is the default) WebLogic Server does serialize-deserialize context and request attributes upon getAttribute(name) to avoid the possibility of ClassCastExceptions. The value of OptimisticSerialization can also be overridden for specific Web applications by setting the optimistic-serialization value in weblogic.xml.

== Weblogic starts slow ==

Weblogic 10.3g may start slow under linux (Centos 5.2) - between 5 - 20 minutes.


Turns out Weblogic uses random number generator during start up. Because of the bug in java it reads ‘randomness’ from /dev/random. /dev/random is very good random numbers generators, but it is extremely slow. It takes sometimes 10 minutes or more to generate one number. /dev/urandom is not that good, but it is instant.


Java somehow maps /dev/urandom file to /dev/random. That’s why default settings in $JAVA_HOME/jre/lib/security/java.security are useless.


Possible solution is to add  **“-Djava.security.egd=file:/dev/./urandom”**(/dev/urandom does not work) to java parameters or change **$JAVA_HOME/jre/lib/security/java.security** and replace securerandom.source with
{{{securerandom.source=file:/dev/./urandom}}}

== Weblogic uses OutputStream in JSPs ==

Warning: You cannot use the **response.getWriter()** method from within a JSP page; if you do, a run-time exception is thrown. Use the **out** keyword to send the JSP response back to the browser from within your scriptlet code whenever possible. The WebLogic Server implementation **of javax.servlet.jsp.JspWriter** uses **javax.servlet.ServletOutputStream**, which implies that you can use **response.getServletOutputStream()**. Keep in mind, however, that this implementation is specific to WebLogic Server. To keep your code maintainable and portable, use the **out** keyword.


Reference: [[http://docs.oracle.com/cd/E15051_01/wls/docs103/webapp/reference.html|http://docs.oracle.com/cd/E15051_01/wls/docs103/webapp/reference.html]]

== Enabling Auto Login by Using the Boot Identity File ==

Browse to **Oracle\Middleware11\user_projects\domains\&lt;DOMAIN_NAME&gt;\servers\AdminServer\security\boot.properties** and edit (or add) the **boot.properties** file. Modify the file with the following values and save it.

{{{
username=admin
password=welcome1
}}}


Next time weblogic will not ask for the user/pass and will encrypt these in the file.

== Patches ==

Placing patch jar into WEB-INF/lib folder of portal deployed on Weblogic will not work, as Weblogic is not using alphabetical ordering like Tomcat does.



One solution is to put the patch under **DOMAIN_HOME/lib**.


Using shared library feature didn't work.</description>
      <pubDate>Thu, 25 Apr 2013 14:22:38 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Weblogic+tips</guid>
      <dc:creator>Igor Spasić</dc:creator>
      <dc:date>2013-04-25T14:22:38Z</dc:date>
    </item>
    <item>
      <title>開発者マニュアル 2.5</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;%E9%96%8B%E7%99%BA%E8%80%85%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB</link>
      <description>概要

# Liferayでのアプリケーション開発
#[[機能の拡張と変更|機能の拡張と変更]]

=== システム構成 ===
#[[開発用の環境|開発用の環境]]

=== アーキテクチャ ===
# モデル
# フレームワークサービスビルダー、セキュリティと権限

=== Liferay IDE（Eclipseプラグイン） ===
#[[Liferay Eclipseプラグイン|Liferay IDEのセットアップ]]
#[[はじめてのLiferay IDE|はじめてのLiferay IDE]]

=== Liferayソースコード環境の構築 ===
#[[ソースコードの入手|ソースコードの入手]]
#[[ソースコードのビルドとデプロイ|ソースコードのビルドとデプロイ]]
#[[開発者モード|開発者モード]]

=== ポートレットの開発 ===
#[[ポートレットの生成|ポートレットの生成]]
#[[ポートレットの構成|ポートレットの構成]]
#[[初めてのポートレット|初めてのポートレット]]
#[[ポートレットの実行フェーズ|ポートレットの実行フェーズ]]
#[[ActionフェーズからRenderファースへデータの引き渡し|ActionフェーズからRenderファースへデータの引き渡し]]
#[[複数Actionのポートレット|複数Actionのポートレット]]
#[[短略URL|短略URL]]

=== テーマの作成 ===
#[[テーマの概要|テーマの概要]]
#[[テーマのビルド／デプロイ|テーマのビルド／デプロイ]]
#[[テーマのカスタマイズ|テーマのカスタマイズ]]
#[[サムネイル|サムネイル]]
#[[テーマでJavaScriptの使用|テーマでJavaScriptの使用]]
#[[設定|設定]]
#[[色|色]]
#[[ポータル規定値|ポータル規定値]]
#[[テーマの継承|テーマの継承]]
#[[テーマのアップグレード（5.2.xから6.0.x）|テーマのアップグレード（5.2.xから6.0.x）]]

=== フック ===
#[[フックの生成|フックの生成]]
#[[JSPのオーバーライド|JSPのオーバーライド]]
#[[カスタムAction|カスタムAction]]
#[[Portal Serviceのオーバーライド|Portal Serviceのオーバーライド]]
#[[プロパティのバーバーライド|プロパティのオーバーライド]]　（言語プロパティのオーバーライド）

=== Extプラグイン ===
#[[Extプラグインのビルド／デプロイ|Extプラグインのビルド／デプロイ]]
#[[Extプラグインの開発|Extプラグインの開発]]
#[[Extプラグインのデプロイ|Extプラグインのデプロイ]]

=== APIとフレームワーク ===</description>
      <pubDate>Thu, 25 Apr 2013 07:06:41 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;%E9%96%8B%E7%99%BA%E8%80%85%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB</guid>
      <dc:creator>Yasuyuki Takeo</dc:creator>
      <dc:date>2013-04-25T07:06:41Z</dc:date>
    </item>
    <item>
      <title>Javadoc Guidelines 7.4 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Javadoc+Guidelines</link>
      <description>All Javadocs for the Liferay core and plugins must conform to the following guidelines. 


The first sections of this wiki page describe general guidelines for documenting the different elements in a Java class and general guidelines for applying the various Javadoc tags. The [[http://www.liferay.com/community/wiki/-/wiki/Main/Javadoc+Guidelines#section-Javadoc+Guidelines-Examples|**Examples**]] section of the document provides references to specific scenarios involving various class elements and Javadoc tags. This last section is intended to provide a quick cross reference for the author to use while writing Javadocs.


Before writing Javadocs, please familiarize yourself with the [[http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html|official Javadoc style guide]].


&lt;&lt;TableOfContents&gt;&gt;

== General Guidelines ==
*                                   All Javadocs should conform to the 80 column limit, just as with code.
*                                   The first paragraph in a Javadoc comment should not be surrounded by paragraph tags.
*                                   Any additional paragraphs should be wrapped in &lt;p&gt; and &lt;/p&gt; tags.
*                                   All HTML tags (except for &lt;b&gt;, &lt;i&gt;, &lt;code&gt; etc.) should be on a line by themselves.\\
**                                 For an example of using table tags, see com.liferay.portal.kernel.annotation.AnnotationLocatorTest. **Note:** When using table tags, you must insert a line return between &lt;table&gt; and the start of the content nested within. The same rule also applies before the ending &lt;/table&gt; tag.
**                                For an example of using list tags, both ordered and unordered, see the //class comment// example below.
*                                   Never leave blank lines at the beginning or end of the comment.
*                                   Leave one blank line between paragraphs, lists, and between the last paragraph in the description and the first Javadoc tag (@author for instance).
*                                   Unordered and ordered lists in comments should be represented using &lt;ul&gt; or &lt;ol&gt; respectively. The &lt;ul&gt; and &lt;/ul&gt; or &lt;ol&gt; and &lt;/ol&gt; tags should each be on a line of their own. List items should each be placed on their own line, and the &lt;li&gt; and &lt;/li&gt; tags should be on their own line immediately before and after the item text. Unordered and ordered lists **must not** be nested within paragraph tags; as format-javadoc condenses paragraph text into 80 columns and will thus ruin any separate-line formatting intended for the list related tags. See the class comment example below for proper use of list and paragraph tags.
*                                   @see and @link should not include the full path unless the class is in another package. If the class is in another package, then the full path to the class (e.g.{@link com.liferay.portal.kernel.util.Constants}) should be specified.
*                                   Wrap all keywords, special constants (true, false, null), and file names (portal-ext.properties) in &lt;code&gt;&lt;/code&gt; tags.
*                                   With regards to class constants, be sure to reference their class either by including the full path of the constant  (e.g.{@link com.liferay.portal.kernel.util.Constants#TYPE_ASSET}) //or// wrapping the constant(s) in &lt;code&gt;&lt;/code&gt; tags followed by a reference to the class with its full path. For example, &lt;code&gt;TYPE_ASSET&lt;/code&gt; and &lt;code&gt;TYPE_CREATOR&lt;/code&gt; defined in {@link com.liferay.portlet.social.model.SocialActivityCounterConstants}.
*                               Use a //single// space between a period ending a sentence and the start of the next sentence.


Example (class comment):

{{{
/**
 * Represents an example class. If a basic description requires more than one
 * sentence, include it in the first paragraph.
 *
 * &lt;p&gt;
 * Example of a second paragraph. Note the blank line between the first &lt;p&gt; tag
 * and the end of the first paragraph.
 * &lt;/p&gt;
 * 
 * &lt;ul&gt;
 * &lt;li&gt;
 * Example list, item 1
 * &lt;/li&gt;
 * &lt;li&gt;
 * Item two
 * &lt;/li&gt;
 * &lt;/ul&gt;
 * 
 * &lt;p&gt;
 * Another paragraph with more information in it. Example code should be placed
 * inside &lt;pre&gt;&lt;code&gt; tags, as shown below.
 * &lt;/p&gt;
 * 
 * &lt;pre&gt;
 * &lt;code&gt;
 * Example myExample = new Example();
 * &lt;/code&gt;
 * &lt;/pre&gt;
 * 
 * &lt;p&gt;
 * Notice the Javadoc tag values are lined up.
 * &lt;/p&gt;
 * 
 * @author Brian Wing Shun Chan
 * @see	   BigExample
 */
public class Example {
	...
}

}}}


}}}

== Javadoc Formatter ==

**Before committing any new or modified Javadocs, run ant format-javadoc on your code first!** This will automatically wrap your comments to the proper width, format html tags, and line up Javadoc tags. The formatter will also propagate your Javadoc changes to the JSON interface for the class.

**1. Compile the code**

{{{ant compile compile-test}}}

**2. Run the formatter**


There are several options for invoking the basic formatting and Javadoc update functionality:

**Basic formatting - Option 1**
Run the formatter on one class at a time.

{{{ant format-javadoc -Dlimit=SomeClassName}}}

**Basic formatting - Option 2**
Run the formatter on *all* classes (this takes a bit longer).

{{{ant format-javadoc}}}

**Javadoc update - Option 3**
Have the formatter insert place holders for comment elements that are not up to date with the current method signatures.

{{{ant format-javadoc -Dupdate=true [-Dlimit=SomeClassName]}}}


For example, the formatter will add comment placeholders for parameters that are in method signatures but not present in the Javadoc comments for those methods.

**3. Run the formatter as the final step**
After making all of your manual changes to Javadoc comments, you should format those changes.

{{{ant format-javadoc [-Dlimit=SomeClassName]}}}

== Commit Process ==

On pull requests containing Javadoc changes, be sure to notify Jim Hinkey {{{@jhinkey}}} in your comment so that your Javadoc changes will be reviewed.

== Class Comments ==

The following information should be present in the following order in the in the class comment:

*                                   Initial class description (paragraph/sentence)
** **First sentence** - Should describe the class clearly and concisely. (**required**)
** **Followup sentences** - Support the first sentence with important points about the class. Note, these sentences show up in the description for the class but do not show up in the summary table for the class. (optional)
*                                   Detailed class description (additional paragraph(s))
** Provide more information on the class's purpose, abilities, and general role. For some classes (simple utility classes for instance) this additional information is not necessary if the initial paragraph provides an adequate description.
**                                   Usage examples or @link tags to where the class can be seen in use.
*[[http://www.liferay.com/community/wiki/-/wiki/Main/Javadoc+Guidelines#section-Javadoc+Guidelines-@author+tags | @author tags]] for each author of the class, from first to most recent. (**required**)
*[[http://www.liferay.com/community/wiki/-/wiki/Main/Javadoc+Guidelines#section-Javadoc+Guidelines-@see+tags | @see tags]] to other closely related classes whose Javadocs gives the reader a clearer picture of the purpose of this class.
*[[http://www.liferay.com/community/wiki/-/wiki/Main/Javadoc+Guidelines#section-Javadoc+Guidelines-@since+tags | @since tags]]. (as applicable)
*[[http://www.liferay.com/community/wiki/-/wiki/Main/Javadoc+Guidelines#section-Javadoc+Guidelines-@deprecated+tags | @deprecated tags]]. (as applicable)

=== Class Descriptions ===

Here are some rules of thumb for initial class descriptions:

* **Start with a verb** - Whenever possible, start an initial class description with verb to describe the purpose of the class.


Example ([[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/kernel/util/Localization.html | Localization]] interface):

{{{Stores and retrieves localized strings from XML, and provides utility methods for updating localizations from JSON, portlet requests, and maps.}}}

* **For service implementations (ServiceImpls)**


Use these patterns:


|=Class Type|= Initial Description Pattern|
|**LocalServiceImpl**|**Provides the local service for**//&lt;summary of methods using actions ending in “ing”&gt;////&lt;entities (plural)&gt;.//|
|**ServiceImpl**|**Provides the remote service for**//&lt;summary of methods using actions ending in “ing”&gt;////&lt;entities (plural)&gt;.//|


Example from DLAppLocalServiceImpl:

{{{
/**
 * Provides the local service for accessing, adding, deleting, moving,
 * subscription handling of, trash handling of, and updating document library
 * file entries, file ranks, and folders. All portlets should interact with the
 * document library through this class or through DLAppService, rather than
 * through the individual document library service classes.
 *
 * ...
}}}


In the above example:

*the **method summary** states the service is for "accessing, adding, ... and updating" its entities.
*the **entities **acted on are *document library file entries*, *file ranks*, and *folders*.


The method summary consists of a list of "ing" verbs in alphabetical order. You can derive these verbs from your method names. Note, you can use "accessing" to cover all the getters, fetchers, and search methods. And "updating" is typically adequate for covering the setters. But feel free to use the verbs that match your methods best.


* **For a model interface and its class** - If some explanation is necessary to distinguish an interface from its class, follow the format below (taken from UserModel.java):

{{{
Provides the base model interface for the User service. Represents a row in the
&amp;quot;User_&amp;quot; database table, with each column mapped to a property of this
class.
}}}


Likewise, the description of the implementation could be as follows (from UserModelImpl.java):

{{{
Provides the base model implementation for the User service. Represents a row in the
&amp;quot;User_&amp;quot; database table, with each column mapped to a property of this
class.
}}}
* **Never begin with "This class"** - Never begin the description with "This class" or anything similar. However, it is acceptable to use this wording in later sentences/paragraphs.

=== Class Javadoc Tags ===
==== @author tags ====

Use @author tags for each author of the class, from first to most recent.

==== @see tags ====

Use @see tags to other closely related classes whose Javadocs would give the reader a clearer picture of the purpose of the class. This often includes the parent class, any important ancestors, and the primary classes that use this class.

==== @since tags ====

The @since tag should always be used in cases where the class is a class that replaces an another class or where the class has been moved to a new package. Deprecations due to moving a class or replacing a class necessitate respective use of a @deprecated tag in the old class and a @since tag in the new class. For specifying the version, see Liferay's Versioning Schema section of Using Liferay Portal [[http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/editions-of-lifer-4|chapter 14]].


The @since tag can optionally be used when the class is newly introduced.


The preferred format for common @since messages are listed below.


|=Reason|=@since Description|
|Replaced and former class|**@since**// version//**, replaced {@link **//fully qualified class//**}**|
|Moved to different package|**@since **//version//**, moved from {@link **//fully qualified class//**}**|
|New class|**@since**// version//|


For a working example, see [[http://docs.liferay.com/portal/6.2/javadocs-all/com/liferay/portal/kernel/lar/StagedModelDataHandlerRegistry.html|StagedModelDataHandlerRegistry]].

==== @deprecated tags ====

The @deprecated tag should provide a short description that includes the release/version of initial deprecation, why the class was deprecated, and a link to what should be used in its place.
For specifying the version, see Liferay's Versioning Schema section of Using Liferay Portal [[http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/editions-of-lifer-4|chapter 14]].


Note, if a class deprecation was due to moving or replacing a class, then the comments for the new class should include an @since tag referencing the old class. See the former section for details.


The preferred format for common @deprecated messages are listed below.


|=Deprecation Reason|=@deprecated Description|
|Replaced|**As of**// version//**, replaced by {@link **//fully qualified class//**}**|
|Moved to different package|**As of**// version//**, moved to {@link **//fully qualified class//**}**|
|Some other reason|**As of**// version//**, due to**// some reason//|
== Method Comments ==

The following information should be present in the Javadoc comment on each method:

*                                   A short, one sentence description of the method.
*                                   Additional sentences and/or paragraphs providing more information on the method's purpose and function. Any information the user of the method would find useful should be included here, including special requirements, circumstances where it should/should not be used, etc. For many methods, this additional explanation is not necessary, particularly for getters and setters.
*                                   Usage examples if necessary and possible. Trivial methods don't need examples, and if an example would be extremely large, simply @link to a place the method is used.
*                                   If the method is only used in one or two places, @link to the methods it is called from. This helps later developers to understand its role in Liferay.
*No need to mention matching a company ID parameter. It should be understood and is not worth cluttering the description.


The following information should always be present in the following order in the Javadoc tags for the method:

*                                   The method parameters, in order, with descriptions.
*                                   All possible return values, including null. If the method is void, do not include this.
*                                   The exceptions the method can throw, in order, with explanations of what would trigger them.


Example:

{{{
/**
 * Returns the localized preferences values for the key, optionally using the
 * default language if the no localization exists for the requested
 * language.
 *
 * @param  preferences the preferences container
 * @param  key the preferences key
 * @param  languageId the id of the language
 * @param  useDefault whether to use the default language if no localization
 *		   exists for the requested language
 * @return the localized preferences values. If &lt;code&gt;useDefault&lt;/code&gt; is
 *		   &lt;code&gt;false&lt;/code&gt; and no localization exists for the requested
 *		   language, an empty array will be returned.
 */
public String[] getPreferencesValues(
	PortletPreferences preferences, String key, String languageId,
	boolean useDefault);
}}}

**Method comments for interfaces and sub-classes**

* **Interface method Javadoc** is *always* required.
* **Sub-class Method Javadoc** is required for methods of sub-classes that have differences from their parent class(es) that should be noted. Some examples are sub-class methods that have different behavior, different side-effects, and/or different requirements of their parameters. Otherwise, the method Javadoc of the interface or super-class is applied to the sub-class automatically. For example, the method Javadoc of RawMetadataProcessor is applied to [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portlet/documentlibrary/util/RawMetadataProcessorImpl.html#generateMetadata(com.liferay.portal.kernel.repository.model.FileVersion) | RawMetadataProcessorImpl.generateMetadata()]].

=== Method Descriptions ===
==== Initial Method Descriptions ====

Always use a verb to describe the method. The preferred format for the descriptions of several common methods are listed below.


|=Method Type			|=Description							|
|constructor(value)          |**Constructs a new ** ... with the *value.*         |
|setSomething(value)	|**Sets the**//something of this thing//**.**|
|getSomething()			|**Returns the**//something of this thing//**.**|
|getSomethings()			|**Returns the**//somethings of this thing//**.** (Note, do //not// refer to collection type; instead, refer to the something in plural form.)	|
|setSomething(boolean)	|**Sets whether**//this thing is something//**.**|
|isSomething()			|**Returns &lt;code&gt;true&lt;/code&gt; if**//this thing is something//**.**|
|deleteSomething()		|**Deletes the**//something//**.**|


There are two general rules for method descriptions:

#                                   When referring to the current instance, say "this something". Example: "Returns &lt;code&gt;true&lt;/code&gt; if this person is an administrator."
#                                   When referring to parameters, use "the" instead of "a". Example: "Returns the localized preferences value for the key."

**Try to avoid simply restating the name of the method in the description**. In some cases, such as with getters/setters, this is fine, but if it is not immediately obvious what a method does, it needs more explanation.


For example, the following is NOT a good example of a method description:

{{{
/**
 * Updates the localization.
 */
public String updateLocalization(String xml, String key, String value, String requestedLanguageId);
}}}


Write the following instead:

{{{
/**
 * Updates the localized string for the language in the localizations XML.
 */
public String updateLocalization(String xml, String key, String value, String requestedLanguageId);
}}}
==== Detailed Method Descriptions ====

If there is both a getter and setter for the same property/collection on the object, place the detailed description on the setter/add method. The getter method should have a one sentence description, and @see the method with more detail.


If there are multiple overloaded methods of the same name, each method should have a complete description of itself. Do not @see the other overloaded forms.

==== More on Method Descriptions ====

**Start the description with “Returns ...” for a method used primarily for the value it returns.**


Getters should always follow this rule.  Methods that involve returning a count or a search result should typically follow this rule as well.

{{{
/**
 * Returns the organization with the primary key.
 *
 * ...
 */
public Organization getOrganization(long organizationId)
}}}

******Distinguish between overloaded methods**


Distinguish between overloaded methods by uniquely describing each method in the first sentence of the method
description. This helps developers spot out which of the overloaded methods they want to use when viewing the Javadoc summary of the methods for the class.  Remember, only the first sentence of the method description shows in the method summary.  The remaining sentences (including sentences of the same paragraph following the first sentence) are available in the full length method description.

{{{
/**
 * Returns all immediate subfolders of the parent folder.
 * ...
  */
public List&lt;Folder&gt; getFolders(long repositoryId, long parentFolderId)
}}}


and

{{{
/**
 * Returns all immediate subfolders of the parent folder, optionally
 * including mount folders for third-party repositories.
 * ....
 */
public List&lt;Folder&gt; getFolders(long repositoryId, long parentFolderId, boolean includeMountFolders)
}}}

******Refer to parameters with "the", not "a" or "given"**

****By using "the" (e.g. "the parent folder") it is assumed the reader will understand we are refering to an entity related to a parameter (e.g. the folder associated with parameter parentFolderId).

{{{
/**
 * Returns all immediate subfolders of the parent folder.
 *
 * ...
 * @param  parentFolderId the primary key of the folder's parent folder
 * ...
 */
}}}

** Multiple Sentences in Initial Method Description **


Unless the details describing a method warrant a paragraph, simply add the sentence(s) directly after the initial method description.

{{{
/**
 * Returns the parent organizations in order by closest ancestor.  The list starts with the organization itself.
 *
 * ...
 */
public List&lt;Organization&gt; getParentOrganizations(long organizationId)
}}}


Important: In the HTML generated from the Javadoc, only the initial method description sentence will appear in the //method summary// table.  But the sentences that follow the initial method description //will// show in the //method details//.

=== Method Javadoc Tags ===
==== @param tags ====

@param tags should provide a short description of what the parameter is or what it is for, as well as any special requirements. If more detail is needed than what can fit in one or two sentences, place it in the method description instead. Never start the parameter description with a capital letter, and always refer to the parameter with "the" rather than "a". Additionally, it is unnecessary to explain what the parameter is for if this was already explained in the method description.


The preferred format of several common parameter types are shown below. Be sure to include the description text found in **bold**.


|=Param case |=Param name convention |=@param Description |
| An entity's ID |//entity//**Id**|**the primary key of the**//entity//|
| An entity's attribute or field|**the**//entity//**'s**//attribute//|
| An involved entity (possibly the method's subject) |//classname (lowercase) //|**the**//(refer to the entity in layman's terms in lower case. Do not refer to the uppercase classname)//|
| A boolean parameter |**whether**//to do something or some condition is true  //|


Bad example:

{{{
/**
 * Returns the name of the role.
 *
 * @param roleId the primary key of the role **whose name to get**
 * @return the name of the role
 */
String getRoleName(long roleId)
}}}


Good example:

{{{
/**
 * Returns the name of the role.
 *
 * @param roleId the primary key of the role
 * @return the name of the role
 */
String getRoleName(long roleId)
}}}


To show possession, use an apostrophe rather that ending a sentence with a preposition. The only exception is that when referring to a primary key, always write "the primary key of the user", not "the user's primary key". Example:

{{{
/**
 * @param  creatorUserId the primary key of the user's creator
 * @param  companyId the primary key of the user's company
 * @param  name the user's name
...
 * @param  groupIds the primary keys of the user's groups
 */
public User addUser(long creatorUserId, long companyId, name, ... , long[] groupIds, ...)
}}}
==== @return tag ====

The @return tag should provide a short description of what the method returns, including any special values. If a method returns null, this should be explicitly stated. Otherwise, the reader should assume the method will always return its designated type.


As a rule of thumb, describe the return value in simple terms.  Leave to method and parameter descriptions details on what can cause subtle variations in values returned.


The preferred format for the return descriptions of several common method types are shown below.


|=Method Type|=@return Description|
|getSomething()|**the**//something of this thing//|
|getSomethings()|**the**//something//**s**//of this thing// (Note, do //not// refer to the collection type; instead, refer to the something in plural form)|
|changeSomething(thing)|**the**//changed thing//**, or &lt;code&gt;null&lt;/code&gt; if the**//change failed//|
|isSomething()|**&lt;code&gt;true&lt;/code&gt; if**//something//**; &lt;code&gt;false&lt;/code&gt; otherwise**|


Note using the word "the" (not "a" or "an") in describing the returned item. 

**Abbreviating return description when extensive matching done**

****If a method uses more than two criteria items to match an entity or is awkward to consolidate into a small sentence, just use the phrase "the matching somethings" to start of the description of the returned entities.

{{{
/**
 * Returns an ordered range of all the file entries in the group starting at
 * the root folder that are stored within the Liferay repository.
 * ...
 * @return the range of matching file entries ordered by the comparator
 * ...
 */
}}}

**Parameter Side Effects**


Only include a message about the side effects of a parameter in the @return description if the parameter  can have a side effect apart from the main purpose of the method. For instance, if the primary purpose of a parameter was to tell the method to use an alternate data source, but a failure in using the alternative data source caused the method to return null rather than throw an exception, say in the @param the parameter can change the data source, and then say in the @return that a failure in using the alternative data source could cause null to be returned, and say in the @throws the exception wouldn't be thrown under this circumstance.

==== @throws tags ====

@throws should give a short description of when an exception will be thrown. They should always be written in the past tense.


It is often difficult to describe exactly what will cause certain exceptions to be thrown, particularly in the case of SystemException. For this exception, simply use the following generic description:

{{{
@throws SystemException if a system exception occurred
}}}


If you do know what could cause an exception, briefly describe the circumstances. For example:

{{{
@throws PortalException if a user with the primary key could not be found
}}}


If you describe what could cause an exception, but cannot provide an exhaustive list of all of the possible causes, simply end your comment generalizing that the type of exception could have occured. For example:

{{{
@throws PortalException if a user with the primary key could not be
        found, if the XSD was not well-formed, or if a portal a exception
        occurred
}}}


By definition, system exceptions are only thrown when something has gone wrong with the system, such as a database server going offline, a filesystem becoming corrupted, or any number of other impossible to predict things going wrong. This is the reason the completely generic "if a system exception is thrown" message is used for system exceptions. All the information that we can really give a developer about the reasons for a system exception being thrown is available in the documentation for SystemException, so there is no need to duplicate this information in essentially every method in Liferay.


Descriptions of portal exceptions should include situations that can be predicted and explained to some extent. For example, methods that take a primary key will generally throw a PortalException when a record with that primary key cannot be found. Other methods will throw a PortalExceptions on validation errors.

**Key Not Found**

**Pattern:** if a &lt;entity1&gt;[ or entity2] with the primary key could not be found

**Invalid Information**

**Pattern:** if the &lt;entity's&gt; information was invalid

**Start New Reasons with 'if'**


Start each new type of reason for the exception with the word **if**. 

**Pattern:** @throws PortalException if &lt;reason type1&gt; or if &lt;reason type2&gt;

{{{
/**
 * ...
 * @throws PortalException if a creator or parent organization with the primary key could not be found or if the organization's information was invalid
 * ...
 */
public Organization addOrganization(long userId, long parentOrganizationId, … , ServiceContext serviceContext)
throws PortalException, ...
}}}
==== @see tags for methods ====

Only use @see when there are more details about something that could be gained by reading the docs for another method or class.

==== @since tags for methods ====

The @since tag should be used in cases where the method is a result of renaming a former method. It can optionally be used when the method is newly introduced to an existing class.


Note, deprecations due to renaming a method should include both the use of @deprecated in the old method and @since in the new method.


The preferred format for common @since messages are listed below.


|=Reason|=@since Description|
|Renamed a former method|**@since**// version//**, rename of {@link #**//someMethod//**()}**|
|Generalization|**@since**// version//**, replaced {@link #**//someMethod()//**}**|
|New method|**@since**// version//|
==== @deprecated tags for methods ====

The @deprecated tag should provide a short description that includes the release/version of initial deprecation, why the method was deprecated, and a link to what should be used in its place. For specifying the version, see Liferay's Versioning Schema section of Using Liferay Portal [[http://www.liferay.com/documentation/liferay-portal/6.1/user-guide/-/ai/editions-of-lifer-4|chapter 14]].


Note, if a method deprecation was due to moving or replacing a method, then the comments for new method should include an @since tag referencing the old method. See the previous section for details.


The preferred format for several common @deprecated messages are listed below.


|=Deprecation Reason|=@deprecated Description|
|Replaced|**As of **//version//**, replaced by {@link **//fully qualified path or #method name//**}**|
|Renamed within same class|**As of**// version//**, renamed to {@link #**//someMethod()//**}**|
|Generalized in another method within same class|**As of**// version//**, replaced by the more general {@link #**//someMethod()//**}**|
|Moved to different package|**As of**// version//**, moved to {@link **//fully qualified path//**}**|
|Some other reason|**As of **//version//**, due to**// some reason//|


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/LayoutSetLocalService.html#updateLayoutSetPrototypeLinkEnabled%28long,%20boolean,%20boolean%29|LayoutSetLocalService.updateLayoutSetPrototypeLinkEnabled(...)]].

== Examples ==

This section provides examples of Javadocs for various types of situations. For each example, an explanation is given, a pattern is identified, and a reference  to Javadoc in a Liferay class is given. Each example is listed in the //Table of Contents// for quick lookup.

=== Class: Initial and detailed description ===

The [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/kernel/util/Localization.html | Localization]] interface demonstrates our guidelines for initial and detailed class descriptions well.

{{{
Stores and retrieves localized strings from XML, and provides utility methods for updating localizations from JSON, portlet requests, and maps. Used for adding localization to strings, most often for model properties.

Localized values are cached in this class rather than in the value object since value objects get flushed from cache fairly quickly. Though lookups performed on a key based on an XML file are slower than lookups done at the value object level in general, the value object will get flushed at a rate which works against the performance gain. The cache is a soft hash map which prevents memory leaks within the system while enabling the cache to live longer than in a weak hash map. 
}}}


Note the following from this example:

* The first sentence of the initial class description starts with a verb (two verbs, in fact).

{{{Stores and retrieves ...}}}

* A followup sentence supports the initial class description's first sentence.

{{{...  Used for adding localization to strings, most often for model properties.}}}

* The second paragraph provides a helpful description of the classes details.

=== Constructor: with parameters ===

**Constructor Description Pattern:** Constructs a new &lt;something&gt; with ... &lt;list each parameter in layman's terms&gt;

{{{
/**
 * Constructs a DayAndPosition with the day of the week and day position.
 *
 * @param d day of the week
 * @param p day position
 */
public DayAndPosition(int d, int p) 
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/kernel/util/StringParser.html#StringParser(java.lang.String)|StringParser.StringParser(...)]]

=== Method: Get by primary key ===

The primary key need not be mentioned in the //method description//, as the primary key is part of the method signature and should have a parameter description.

**Method Description Pattern:** Returns the &lt;something&gt; with the primary key

**Return Tag Pattern:** the //something of this thing//

{{{
/**
 * Returns the organization with the primary key.
 *
 * @param  organizationId the primary key of the organization
 * @return the organization
 */
public Organization getOrganization(long organizationId)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/OrganizationService.html#getOrganization(long)|OrganizationService.getOrganization(...)]].

=== Method: Deletes/Removes something ===

The primary key need not be mentioned in the //method description//, as the primary key is part of the method signature and should have a parameter description.

**Method Description Pattern:**


Deletes the &lt;something&gt;
or 
Removes the &lt;something&gt;

**Return Tag Pattern:** the //something// that was removed

=== Method: Get/search/count matching a single field ===

Methods that involve straight matching of fields to simple values should use the following pattern ...

**Method Description Pattern:** Returns &lt;something&gt; with the &lt;field1&gt;... .


Example:

{{{
/**
 * Returns the primary key of the user with the email address.
 *
 * ...
 * @return the user with the email address
 */
public long getUserIdByEmailAddress( ... , String emailAddress)

}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserService.html#getUserByEmailAddress%28long,%20java.lang.String%29|UserService.getUserByEmailAddress(...)]].

=== Method: Get/search/count matching multiple fields ===

At times it you may have a whole set of parameters used to find/match an entity instance. To simplify things, describe your method as "matching" these parameters and list the parameters.

**Method Description Pattern:** Returns &lt;something&gt; matching the &lt;field1&gt; [,&lt;field2&gt;, ... &lt;fieldN&gt;] and &lt;fieldN+1&gt; … 


Example:

{{{
/**
 * Returns all the structures matching the group, name, and description.
 * ...
 * @return the matching structures
 */
public List&lt;DDMStructure&gt; getStructure(long groupId, String name, String description)


}}}


For working examples, see DDMStructure.getStructure(long groupId, String name, String description)

=== Method: Get/search/count by field-to-keyword matching ===

Methods for which individual fields are matched with corresponding keyword parameters, should follow the pattern ...

**Method Description Pattern:** Returns &lt;somethings&gt; whose &lt;fieldA&gt;[, &lt;fieldB&gt;, … or &lt;fieldZ&gt;] match the keywords specified for them … 

=== Method: Get/search/count by Combined Field Value and Field-to-Keyword Matching ===

Methods for which straight matching of fields to simple values is done, //and// for which individual fields are matched with corresponding keyword parameters, should follow the pattern ...

**Method Description Pattern:** Returns &lt;somethings&gt; with the &lt;field1&gt;[, &lt;field2&gt;, … and &lt;fieldn&gt;], and whose &lt;fieldA&gt;[, &lt;fieldB&gt;, … and &lt;fieldZ&gt;] match the keywords specified for them ...

{{{
/**
 * Returns an ordered range of all the users with the status, and whose
 * first name, middle name, last name, screen name, or email address match
 * the keywords specified for them, ...
 * ...
 * @return the matching users
 */
public List&lt;User&gt; search(long companyId, String firstName, String middleName, String lastName, String screenName, String emailAddress, int status, ... )
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserLocalService.html#search(long,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20java.util.LinkedHashMap,%20boolean,%20int,%20int,%20com.liferay.portal.kernel.util.OrderByComparator)|UserLocalService.search(...)]].

=== Method: Returning a boolean ===

If a method returns a boolean, only the condition(s) for which the method returns true need be included in the initial method description.

**Method Description Pattern:** Returns &lt;code&gt;true&lt;/code&gt; if &lt;satisfying condition(s)&gt;

**Return Tag Pattern:** &lt;code&gt;true&lt;/code&gt; if //something//; &lt;code&gt;false&lt;/code&gt; otherwise

{{{
/**
  * Returns &lt;code&gt;true&lt;/code&gt; if the user is a member of the group.
  *
  * ...
  * @return if the user is a member of the group; &lt;code&gt;false&lt;/code&gt; otherwise
  */
public boolean hasGroupUser(long groupId, long userId)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserService.html#hasGroupUser(long,%20long)|UserService.hasGroupUser(...)]].

=== Method: Returning a count ===

If a method returns some sort of count, then use the following pattern...

**Method Description Pattern:** Returns the number of &lt;something&gt; ...


Hint, if a method name contains the word “Count” or the method returns an int, it may qualify for this pattern.


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/OrganizationLocalService.html#searchCount(long,%20long,%20java.lang.String,%20java.lang.String,%20java.lang.Long,%20java.lang.Long,%20java.util.LinkedHashMap)|OrganizationLocalService.searchCount(...)]].

=== Method: Returning a collection ===

Precede the reference to the entity instances with the term “all the”.

**Method Description Pattern:** Returns … all the &lt;entities&gt; …

**Return Tag Pattern:** the //something//**s**//of this thing// (Note, do //not// refer to the collection type; instead, refer to the something in plural form)

{{{
/**
 * Returns all the organizations associated with the user.
 *
 * ...
 * @return the organizations associated with the user
 */
public List&lt;Organization&gt; getUserOrganizations(long userId)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/OrganizationService.html#getUserOrganizations(long)|OrganizationService.getUserOrganizations(...)]].

=== Method: Returning an ordered range of values ===

If the collection returned is ordered, mention that in the method description.

**Method Description Pattern:** Returns an **ordered** range of ...

**Return Tag Pattern:** the //something//**s**//of this thing// (Note, do //not// refer to the collection type; instead, refer to the something in plural form)

{{{
/**
 * Returns an ordered range of all the users with a social relation of the type with the user.
 *
 * ...
 * @return the ordered range of users with a social relation of the type with the user
 */
public List&lt;User&gt; getSocialUsers(long userId, int type, int start, int end, OrderByComparator obc)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserLocalService.html#getSocialUsers(long,%20int,%20int,%20int,%20com.liferay.portal.kernel.util.OrderByComparator)|UserLocalService.getSocialUsers(...)]].

=== Method: Returning an ordered values NOT as a range of values ===

Sometimes, you'll need to describe your method that returns the entire collection of values, that are not a part of a paginated range, and are ordered.


Example:

{{{
/**
 * Returns all the structures matching the class name ID ordered by the 
 * comparator.
 * ...
 */
public List&lt;DDMStructure&gt; getClassStructures(long companyId, long classNameId, OrderByComparator orderByComparator)
}}}


See DDMStructure.getClassStructures().

=== Method: Returning a ranged collection ===

If the collection returned is a subset of the total collection with a specified start and end index, refer to the subset as a range.

**Method Description Pattern:** Returns an ordered **range** of …

**Return Tag Pattern:** the //something//**s**//of this thing// (Note, do //not// refer to the collection type; instead, refer to the something in plural form)

{{{
/**
 * Returns an ordered range of all the users with a social relation of the type with the user.
 *
 * ...
 * @return the ordered range of users with a social relation of the type with the user
 */
public List&lt;User&gt; getSocialUsers(long userId, int type, int start, int end, OrderByComparator obc)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserLocalService.html#getSocialUsers(long,%20int,%20int,%20int,%20com.liferay.portal.kernel.util.OrderByComparator)|UserLocalService.getSocialUsers(...)]].

=== Method: Describing overloaded methods ===

In most cases, you'll find the overloaded methods calling one of the others--we'll refer to this as the //main// method. Here are some rules of thumb ...

**If there are only 2 overloaded methods...***


...you can simply describe the main method as having //additional parameters//.

***Method1 (main):***

{{{
/**
 * Adds an organization with additional parameters.
 */
addOrganization(long parentOrganizationId, String name, String type, boolean recursable, long regionId, long countryId, int statusId, String comments, boolean site, List&lt;Address&gt; addresses, List&lt;EmailAddress&gt; emailAddresses, List&lt;OrgLabor&gt; orgLabors, List&lt;Phone&gt; phones, List&lt;Website&gt; websites, ServiceContext serviceContext)
}}}

***Method2:***

{{{
/**
 * Adds an organization.
 */
addOrganization(long parentOrganizationId, String name, String type, boolean recursable, long regionId, long countryId, int statusId, String comments, boolean site, ServiceContext serviceContext)
}}}


For a working example, see the //addOrganization// methods in [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/impl/OrganizationServiceImpl.html|OrganizationServiceImpl]].

***If there are 3 or more overloaded methods...***


... focus on their distinguishing parameters.


Example, 3 overloaded methods named //addStructure()// and their distinguishing method descriptions.

***Method1 (main):***

{{{
/**
 * Adds a structure referencing its parent structure.
 */
addStructure(long userId, long groupId, long parentStructureId, long classNameId,
String structureKey, Map&lt;Locale, String&gt; nameMap, Map&lt;Locale, String&gt; descriptionMap, String xsd, String storageType, int type, ServiceContext serviceContext)
}}}

***Method2:***

{{{
/**
 * Adds a structure referencing a default parent structure, using the portal
 * property &lt;code&gt;dynamic.data.lists.storage.type&lt;/code&gt; storage type and
 * default structure type.
 */
addStructure(long userId, long groupId, long classNameId, Map&lt;Locale, String&gt; nameMap, Map&lt;Locale, String&gt; descriptionMap, String xsd, ServiceContext serviceContext)
}}}

**Method3:**

{{{
/**
 * Adds a structure referencing a default parent structure if the parent
 * structure is not found.
 */
addStructure(long userId, long groupId, String parentStructureKey, long classNameId, String structureKey, Map&lt;Locale, String&gt; nameMap, Map&lt;Locale, String&gt; descriptionMap, String xsd, String storageType, int type, ServiceContext serviceContext)
}}}


Note, you can still consider appending //with additional parameters// at the end of the main method if it makes sense.

=== Method: Password Policy Methods ===

The following represents different types of methods that involve relationship of an entities to password policies.

**Password Policy - Add**

**Method Description Pattern:** Assigns the password policy to the &lt;entity(s)&gt;, removing any other currently assigned password policies.


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserService.html#addPasswordPolicyUsers(long,%20long[])|UserService.addPasswordPolicyUsers(...)]].

**Password Policy - Has**

**Method Description Pattern:** Returns &lt;code&gt;true&lt;/code&gt; if the password policy has been assigned to the &lt;entity&gt;.


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/impl/UserLocalServiceImpl.html#hasPasswordPolicyUser(long,%20long)|UserLocalServiceImpl.hasPasswordPolicyUser(...)]].

**Password Policy - Unset**

**Method Description Pattern:** Removes the &lt;entity(s)&gt; from the password policy.


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/UserService.html#unsetPasswordPolicyUsers(long,%20long[])|UserService.unsetPasswordPolicyUsers(...)]].

=== Method: Uses a property ===

If your parameter uses a property, be sure to mention the kind of property it is (e.g. portal property, portlet property, Liferay plugin package property, etc) and mention the property name explicitly wrapped in code tags.


Here is an example from DDMStructureLocalService:

{{{
/**
 * Adds a structure referencing a default parent structure, using the portal
 * property &lt;code&gt;dynamic.data.lists.storage.type&lt;/code&gt; storage type and
 * default structure type.
 * ...
 */
addStructure(long userId, long groupId, long classNameId, Map&lt;Locale, String&gt; nameMap, Map&lt;Locale, String&gt; descriptionMap, String xsd, ServiceContext serviceContext)
}}}
=== Parameter: Primary key ===

Refer to primary keys explicitly.  Do not refer to them as IDs, even if the parameter uses Id in its name (e.g. //organizationId//).

{{{
/**
 * ...
 * @param  organizationId the primary key of the organization
 * ...
 */
public Organization getOrganization(long organizationId)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/OrganizationService.html#getOrganization(long)|OrganizationService.getOrganization(...)]].

=== Parameter: Attribute/field ===

When describing parameters that represent entity fields, use the possessive form of the entity to show ownership of the field. This is often applicable in describing parameters in add/update methods for an entity.

{{{
/**
 * ...
 * @param name the organization's name
 * @param type the organization's type
 * ...
 */
public Organization addOrganization(..., String name, String type, …)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/OrganizationService.html#addOrganization(long,%20java.lang.String,%20java.lang.String,%20boolean,%20long,%20long,%20int,%20java.lang.String,%20boolean,%20java.util.List,%20java.util.List,%20java.util.List,%20java.util.List,%20java.util.List,%20com.liferay.portal.service.ServiceContext)|OrganizationService.addOrganization(...)]].

=== Parameter: Boolean ===

When describing boolean parameters, //always// start the description with the word **whether**. Two common uses of a boolean parameter are the following:

* The parameter indicates //some condition//. Therefore, describe the condition in terms of it being //true//.
* The parameter indicates whether //to do something//. Therefore, describe the action to be performed when the parameter value is //true//.


Example,

{{{
/**
 * ...
 * @param male whether the user is male
 * ...
 * @param sendEmail whether to send the user an email notification about their new account
 * ...
 */
public User addUser(
			..., boolean male,
			..., boolean sendEmail,
			...)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/UserService.html#addUser(long,%20boolean,%20java.lang.String,%20java.lang.String,%20boolean,%20java.lang.String,%20java.lang.String,%20long,%20java.lang.String,%20java.util.Locale,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20int,%20boolean,%20int,%20int,%20int,%20java.lang.String,%20long[],%20long[],%20long[],%20long[],%20java.util.List,%20java.util.List,%20java.util.List,%20java.util.List,%20java.util.List,%20boolean,%20com.liferay.portal.service.ServiceContext)|UserService.addUser(...)]].

=== Parameter: ClassNameId ===

When describing the //classNameId// parameter, identify if the method is referring to its own service model or to a related model. Then, use the appropriate pattern below based on which class name is being used.

**Uses own service model's class name ID - True**

**Parameter Description Pattern:** the primary key of the &lt;entity's&gt; class name

**Uses a related model's class name ID - True**

**Parameter Description Pattern:** the primary key of the class name for the &lt;entity's&gt; related model


For a working example, see DDMStructureLocalServiceImpl.addstructure(...).

=== Parameter: Entity (primary) ===

Use this pattern when an entity (typically of a class type) is either the subject of the method or involved in the method's behavior.

{{{
/**
 * ...
 * @param user the user
 * ...
 */
public boolean isPasswordExpired(User user)
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/UserLocalService.html#isPasswordExpired(com.liferay.portal.model.User)|UserLocalService.isPasswordExpired(...)]].

=== Parameter: ServiceContext ===

For every method that accepts a ServiceContext param, the javadoc for that param should specify which fields within the ServiceContext are mandatory and which other fields are taken into account if specified.


Here are the rules to follow:

#                      Provide a simple description of the service context.  If it can optionally be null, include that information in this first sentence.
#                      In the next sentence,  start with “Must set” and describe any service context fields which are mandatory.
#                      In the next sentence, start with “Can set” or "Can merge" and describe any service context fields which, if specified, //can //be used by the underlying implementation.If there are a combination of fields that can be //set// and fields that can be //merged//, mention the fields that can be set //before //the fields that can be merged.
#Any service context //attribute //specifically named should be wrapped in &lt;code&gt;&lt;/code&gt; tags. Example, a service context's &lt;code&gt;fieldEntryTypeId&lt;/code&gt;.

**Parameter Tag Pattern:**


@param serviceContext the service context to be applied [ (optionally &lt;code&gt;null&lt;/code&gt;) ] . [ Must set the &lt;field1&gt; [, &lt;field2&gt;, … and &lt;fieldN&gt; ]  for the &lt;entity&gt;. ] [ Can (set | merge) the &lt;fieldA&gt; [, &lt;fieldB&gt;, … and &lt;fieldZ&gt; ] for the &lt;entity&gt;. ] 

{{{
/**
 * ...
 * @param  serviceContext the service context to be applied (optionally
 *         &lt;code&gt;null&lt;/code&gt;). Can set asset category IDs and asset tag
 *         names for the organization, and merge expando bridge attributes
 *         for the organization.
 * ...
 */
public Organization updateOrganization( ... , ServiceContext serviceContext)
}}}


Note, in the above example there are no //mandatory// service context fields.  However, the method does apply //replacement// field values and //new// field values.

=== Parameter: And/or operator ===

The following is an example of how an and/or operator parameter may be described.  Note, be sure to check the specific use of the operator in order to describe it properly.

{{{
/**
 * ...
 * @param  andSearch whether every field must match its keywords, or just
 *         one field. For example, &amp;quot;users with the first name 'bob' and
 *         last name 'smith'&amp;quot; vs &amp;quot;users with the first name 'bob'
 *         or the last name 'smith'&amp;quot;.
 * ...
 */
public List&lt;User&gt; search( ... , String firstName, String middleName, … , boolean andSearch, ... )
}}}


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/UserLocalService.html#search(long,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String,%20int,%20java.util.LinkedHashMap,%20boolean,%20int,%20int,%20com.liferay.portal.kernel.util.OrderByComparator)|UserLocalService.search(...)]].

=== Parameter: Refer reader to more information ===

To direct a reader to another class or URL containing more information related to the parameter, add a sentence with a link to that information.

**Parameter Tag Pattern:**


@param //the parameter's description//. For more information see {@link fully-qualified class name}.

**Example,**

{{{
 * @param  params the finder params. For more information see {@link
 *         com.liferay.portal.service.persistence.OrganizationFinder}
}}}


This example is used in comments for several of the search methods in [[http://docs.liferay.com/portal/6.1/javadocs/com/liferay/portal/service/OrganizationLocalService.html|OrganizationLocalService]].

=== Return: Ordered collection ===

For ordered collection returned, mention how or what determines the order

**Examples,**

{{{
@return the range of matching file entries ordered by the comparator

@return the range of matching file entries ordered by date modified
}}}


For working examples, see DDMStructure.getStructures(long groupId, long classNameId, int start, int end, OrderByComparator orderByComparator) and [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portlet/documentlibrary/service/impl/DLAppServiceImpl.html#getGroupFileEntries(long,%20long,%20int,%20int)|DLAppServiceImpl.getGroupFileEntries(...)]].

=== Return: Significantly varying values ===

If a method can return values significantly different or special known values, separate the descriptions of these values using commas //– even if there are only two such differing values//.  This convention helps to emphasize differences between them.

{{{
@return the primary key of the organization, or &lt;code&gt;0&lt;/code&gt; if the organization was not found

}}}


Note, the convention of separating two values with a comma is only used with describing return values.  This convention is not to be used with the other tags (e.g. @param, @throws).


For a working example, see [[http://docs.liferay.com/portal/6.1/javadocs-all/com/liferay/portal/service/OrganizationLocalService.html#getOrganizationId(long,%20java.lang.String)|OrganizationLocalService.getOrganizationId(...)]].</description>
      <pubDate>Tue, 23 Apr 2013 17:16:21 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Javadoc+Guidelines</guid>
      <dc:creator>Jim Hinkey</dc:creator>
      <dc:date>2013-04-23T17:16:21Z</dc:date>
    </item>
    <item>
      <title>Configuring Liferay as several modules in IntelliJ 2.4</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Configuring+Liferay+as+several+modules+in+IntelliJ</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;


Liferay project in IntelliJ can be organized in several modules. This approach is a bit more complex, but it reflects the real structure of the project.


Before we continue with the IntelliJ configuration, we will assume that Liferay is successfully checked out from svn trunk, compiled, deployed and started at least once.

//Note:// you may skip this manual configuration and check [[Fast IntelliJ setup of Portal project|fast configuration steps]]. 

== Choose Projects Root ==

Lets assume that Liferay portal is checked out to **liferay/portal** folder. As we know, portal by default uses **liferay/bundles** folder (for app server, deploy folder etc.).


You have two options for IntelliJ projects root:

# **liferay/portal** - project will be created inside **portal** folder and will not be aware of surrounding folders. This might be a good choice if you work only with portal (no plugins) or you do not use default *bundles* folder etc. 
# **liferay** - project will be created below the **portal** folder, in the Liferay home folder. Project root therefore contains not only the **portal**, but also **bundles**. What is more convenient, you may checkout plugins into **liferay/plugins** and //use the same project// for both portal and plugins. Another tip is to put some batch files in the project root so you can quickly access them from IntelliJ.


IntelliJ configuration in both cases is very, very similar. The only difference is in the paths, that's all.


Author of this page (strongly:) recommends the **second** option and to use **liferay** (Liferay home) folder as project root.

== Create Project ==

Start IntelliJ 9.x and create a new project (e.g. //File&gt;New Project//). Choose '//Create Java project from existing sources//'.

{{intellij-007.png}}


On the next screen, choose projects root folder:

{{intellij-008-b.png}} or {{intellij-008-a.png}}


You have two options for project root, as we already discussed previously.

=== Automatic configuration ===

In most cases, IntelliJ will continue with the automatic project configuration. This saves some time and it is recommended to proceed with the process. Anyhow, even if we skip this automatic configuration, we can manually configure the project later.


Automatic project configuration starts with source folder scanning. Choose all founded folders:

{{intellij-010.png}}


IntelliJ will then search for libraries and will offer to create some library sets. Choose the following:

{{intellij-011.png}}


Then, IntelliJ will search for modules and will try to resolve modules dependencies. Choose the following:

{{intellij-013.png}}


On the next screen choose projects JDK, e.g. JDK 1.6.


Facets detection is the next step (not so important at the moment):

{{intellij-014.png}}


Finally, we are done – press ‘Finish’ and the IDEA project will be created. Note that this is just the end of the automatic project configuration and that we have to tweak it more.


Again, described automatic configuration is not a necessary step and it may be skipped – project can be configured manually later.

=== Configure Project ===

There are few more things to configure and check before we will be able to compile the project from IDEA.

==== Javac heap ====

Let’s give our Java compiler more memory – it will need it:). Go to //Settings&gt;Compiler&gt;Java Compiler// and put e.g. **512** MB as available amount of Javac heap.

==== Git access ====

During project creation, IDEA will also recognize that project is under Git control. However, we must enter personal credentials, so it is a good time to perform the update (CTRL+T) and configure the Git access.

==== File encoding ====

Set IDE encoding to UTF-8, if not already set.

{{intellij-016.png}}

==== Ant ====

Now we can add some **build.xml** files to the Ant tool window. For example:

{{intellij-017.png}}

=== Library sets ===
==== Portal libraries ====

Portal library set contains all jars from **lib/portal** folder. Initially (created during automatic configuration), this set contains attached all jars files. To make things more convenient, let’s remove all attached jars and attach jar folder instead – all portal jars will be automatically managed now on when added or removed:

{{intellij-019.png}}

==== Development libraries ====

Similar as with the Portal libraries, Development library set contain all jars from **lib/development** folder. Again, we can remove all jars and attach just jar folder (it is more convenient, as explained above):

{{intellij-020.png}}


Development library set will be in '//provided//' scope, i.e. only available for compilation.

==== Global libraries ====

Global library set will contain the **lib/global** folder. For the sake of simplicity, let’s also add **portal-client.jar** in the same set:

{{intellij-023b.png}}

=== Modules ===

This is probably the most important part of the configuration. For each module we will describe its definition and dependencies.

==== Rename modules ====

After automatic project configuration, IntelliJ will create the project with all founded modules. By default, IntelliJ will name modules in uppercase. To make project tree more compact and convenient, it is recommended to rename modules names (SHIFT+F6) to lowercase. During module renaming, IntelliJ will complain with an error that can be completely and safely ignored.


If automatic step is not performed, there is nothing to rename and you will have to create modules manually.

==== portal ====

Root module, no dependencies.

{{intellij-025.png}}

==== portal-impl ====

Content root: **liferay\portal\portal-impl**

* Source Folders: **src**
* Test Source Folders: **test**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* portal (Compile)
* global (Provided)
* portal-service (Provided)
* util-bridges (Compile)
* util-java (Compile)
* util-taglib (Compile)

==== portal-service ====

Content root: **liferay\portal\portal-service**

* Source Folders: **src**
* Test Source Folders: **test**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* global (Compile)
*portal-impl (Test)

==== portal-web ====

Content root: **liferay\portal\portal-web**

* Test Source Folders: **test**


Dependencies:

* development (Provided)
* global (Provided)
* portal-impl (Compile)
* portal-service (Provided)
* util-java (Compile)
* util-taglib (Compile)

==== support-tomcat ====

Content root: **liferay\portal\support-tomcat**

* Source Folders: **src**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* portal-service (Provided)

==== util-bridges ====

Content root: **liferay\portal\util-bridges**

* Source Folders: **src**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* global (Provided)
* portal (Compile)
* portal-service (Provided)
* util-java (Compile)

==== util-java ====

Content root: **liferay\portal\util-java**

* Source Folders: **src**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* global (Provided)
* portal (Compile)
* portal-service (Provided)

==== util-taglib ====

Content root: **liferay\portal\util-taglib**

* Source Folders: **src**
* Excluded Folders: **classes**


Dependencies:

* development (Provided)
* global (Provided)
* portal (Compile)
* portal-impl (Compile)
* portal-service (Provided)
* util-java (Compile)

==== Project tree overview ====

Here is how project tree will look like after modules configuration.
{{intellij-045.png}}

=== Facets ===

Generally, we do not need any facet to be able to compile project within IntelliJ. However, we will need a web facet to be deployed with the artifact later.

==== portal-web ====

{{intellij-047.png}}

== Compile Project ==

Project is now ready to be compiled from IntelliJ: CTRL+F9 and wait for the successful compilation result.


Warning: when compiling for the first time, it may happen that compilation fails, while there are no errors in editor and code. Just invalidate the cache and recompile the project again.</description>
      <pubDate>Mon, 22 Apr 2013 09:32:51 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Configuring+Liferay+as+several+modules+in+IntelliJ</guid>
      <dc:creator>Roberto Díaz</dc:creator>
      <dc:date>2013-04-22T09:32:51Z</dc:date>
    </item>
    <item>
      <title>Adding Spring Capabilitites to Hook 1.0</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Adding+Spring+Capabilitites+to+Hook</link>
      <description>create a file service.properties in docroot/WEB-INF/src with the following content:

[code]    

include-and-override=${base.path}/service-ext.properties    

spring.configs=WEB-INF/classes/META-INF/ext-spring.xml

[/code]

create the file:docroot/WEB-INF/src/META-INF/ext-spring.xml

In this file, you can now add your beans which you want to be handled by Spring. 

Some more advice:

We did this to enhance the funcionality of the DynamicDataList-portlet of Liferay. We wanted to have access to some additional custom classes, which we wrote ourself. To get access to the Bean in the Velocity templates, we needed to get the bean from the Hook-portlet, so we had to get the bean from the portletClassLoader.</description>
      <pubDate>Thu, 18 Apr 2013 11:51:50 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Adding+Spring+Capabilitites+to+Hook</guid>
      <dc:creator>Jan Geißler</dc:creator>
      <dc:date>2013-04-18T11:51:50Z</dc:date>
    </item>
    <item>
      <title>LDAP with AD in Liferay 6.0.5 1.3</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;LDAP+with+AD+in+Liferay+6.0.5</link>
      <description>&lt;h2&gt;
	1. Introduction :&lt;/h2&gt;
&lt;p&gt;
	This is an example of a basic LDAP integration in Liferay 6.0.5. In the example we import users/groups into Liferay via LDAP and vice versa.&lt;/p&gt;
&lt;h2&gt;
	&lt;strong&gt;2. Environment&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;
	&lt;em&gt;Windows Server 2003, Active Directory&lt;/em&gt;&lt;br&gt;
	&lt;em&gt;Liferay 6.0.5&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
	&lt;br&gt;
	3. LDAP &amp;amp; AD&lt;/h3&gt;
&lt;p&gt;
	&lt;strong style="line-height: 1.5;"&gt;LDAP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	LDAP (Lightweight Directory Access Protocol) is a directory publishing service and specially designed for directory service providers.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Active Directory&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	AD (Active directory) is a directory service provider, where you can add new user to a directory, remove or modify, specify privilages, assign policy etc. Its just like a phone directory where every person have a unique contact number. Everything in AD(Active Directory) are considered as Objects and every object is given a Unique ID.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;LDAP vs AD&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	AD is a directory services database, and LDAP is one of the protocols you can use to talk to it.&lt;/p&gt;
&lt;h2&gt;
	&lt;br&gt;
	4 : AD Users&lt;/h2&gt;
&lt;p&gt;
	First you need to setup the &lt;strong&gt;Active&lt;/strong&gt; &lt;strong&gt;Directory&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
	In &lt;strong&gt;Active&lt;/strong&gt; &lt;strong&gt;Directory&lt;/strong&gt; you need to define 2 &lt;strong&gt;OU&lt;/strong&gt;(&lt;strong&gt;Organizational&lt;/strong&gt; &lt;strong&gt;Unit&lt;/strong&gt;). One is for storing or categorizing all the &lt;strong&gt;users&lt;/strong&gt;. The second is to Create the &lt;strong&gt;groups&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
	For example:-&lt;/p&gt;
&lt;p&gt;
	a) OU=&lt;strong&gt;Users&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	b) OU=&lt;strong&gt;Groups&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
	4.1 Create &lt;strong&gt;OU&lt;/strong&gt; in &lt;strong&gt;AD&lt;/strong&gt;:&lt;/h3&gt;
&lt;p&gt;
	Go to &lt;strong&gt;DN&lt;/strong&gt; &amp;ndash; right click &amp;ndash; &lt;strong&gt;New&lt;/strong&gt; &amp;ndash; &lt;strong&gt;Organizational&lt;/strong&gt; &lt;strong&gt;Unit&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=e6f06d53-6fc9-4886-a365-71cf689f8cd3&amp;groupId=346578" style="line-height: 1.5;"&gt;&lt;img border="0" height="460" src="http://cdn.www.liferay.com/image/image_gallery?uuid=8708ca3a-9e04-43f6-93aa-243666703158&amp;groupId=14&amp;t=1289364745025" width="744"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	4.2 Create Users in AD:&lt;br&gt;
	Go to &lt;strong&gt;OU (mpower)&lt;/strong&gt; &amp;ndash; right click &amp;ndash; &lt;strong&gt;New&lt;/strong&gt; &amp;ndash; &lt;strong&gt;User&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=ef063cbc-d362-4e43-8461-370d9e1ad5cb&amp;groupId=346578"&gt;&lt;img border="0" height="506" src="http://cdn.www.liferay.com/image/image_gallery?uuid=1fbee06c-1b2d-41fb-9570-6bd33a268b51&amp;groupId=14&amp;t=1289364745027" width="644"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	&lt;strong&gt;4.3 User&amp;rsquo;s Attributes&lt;/strong&gt;:&lt;/h3&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=a8bb7105-3a01-4b91-bd2c-bc0c6d45f599&amp;groupId=346578"&gt;&lt;img src="http://cdn.www.liferay.com/image/image_gallery?uuid=f3e7e726-7f39-4387-ad4d-e459343d6ec9&amp;groupId=14&amp;t=1289364745030" style="border-width: 0.0px;border-style: solid;width: 371.0px;height: 444.0px;"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	You can test the users account by &lt;strong&gt;login&lt;/strong&gt; in &lt;strong&gt;Active&lt;/strong&gt; &lt;strong&gt;Directory&lt;/strong&gt; machine with newly created users.&lt;/p&gt;
&lt;h2&gt;
	5. LDAP Configuration in Liferay&lt;/h2&gt;
&lt;h3&gt;
	5.1 : Integration&lt;/h3&gt;
&lt;p&gt;
	a. Login as &lt;strong&gt;Administrator&lt;/strong&gt; in liferay portal.&lt;/p&gt;
&lt;p&gt;
	b. Go to &lt;strong&gt;Control&lt;/strong&gt; &lt;strong&gt;Panel&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Settings&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Authentication&lt;/strong&gt; -&amp;gt; &lt;strong&gt;LDAP&lt;/strong&gt; select tab.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=c9bdd69c-76e4-4a0d-8cb4-8bf475adc4d6&amp;groupId=346578"&gt;&lt;img border="0" height="506" src="http://cdn.www.liferay.com/image/image_gallery?uuid=9d87375f-88e6-4222-81bb-2c63c0f314a8&amp;groupId=14&amp;t=1289364745031" width="989"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br&gt;
	&lt;br&gt;
	c. Check the &lt;strong&gt;Enabled&lt;/strong&gt; box.&lt;/p&gt;
&lt;p&gt;
	d. Id. If the &lt;strong&gt;Required&lt;/strong&gt; box is checked only users in the LDAP server will be able to log into Liferay Portal. For this demonstration leave the box unchecked.&lt;/p&gt;
&lt;h3&gt;
	5.2: Server Name&lt;/h3&gt;
&lt;p&gt;
	Liferay Portal supports other directory servers in addition to the ones provided. The &lt;strong&gt;Apache&lt;/strong&gt; &lt;strong&gt;Directory&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;, &lt;strong&gt;Microsoft&lt;/strong&gt; &lt;strong&gt;Active&lt;/strong&gt; &lt;strong&gt;Directory&lt;/strong&gt; &lt;strong&gt;Server&lt;/strong&gt;, and &lt;strong&gt;Novell&lt;/strong&gt; &lt;strong&gt;eDirectory&lt;/strong&gt; comes preconfigured.&lt;/p&gt;
&lt;p&gt;
	Select Server Name : &lt;strong&gt;Microsoft Active directory Server&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=b18af643-1fa4-48dd-86bd-55f21c84f4d6&amp;groupId=346578"&gt;&lt;img border="0" height="383" src="http://cdn.www.liferay.com/image/image_gallery?uuid=9e7b19e4-3a38-49d4-86e5-c3fbaf918b31&amp;groupId=14&amp;t=1289364745033" width="365"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	5.3: Connection :&lt;/h3&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=a061785c-44bd-4884-8140-971b59305b16&amp;groupId=346578"&gt;&lt;img border="0" height="294" src="http://cdn.www.liferay.com/image/image_gallery?uuid=d91e8bc3-f886-4fcd-81d6-d592641e81a1&amp;groupId=14&amp;t=1289364745034" width="379"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Provide given values and Test LDAP Connection :&lt;/p&gt;
&lt;p&gt;
	Base Provider Url : &lt;a&gt;ldap://172.22.1.26:389&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	Base DN : &lt;strong&gt;ou=Tech,dc=mpowerglobal,dc=com&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Principal : &lt;strong&gt;mpowerglobal\administrator&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	credentials : &lt;strong&gt;abc123.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;br&gt;
	&lt;strong&gt;mpowerglobal&lt;/strong&gt; - domain name in AD&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;Tech&lt;/strong&gt; - Organizational Unit&lt;/p&gt;
&lt;p&gt;
	&lt;a&gt;172.22.1.26 : IP in AD Machine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;389&lt;/strong&gt; : Port No.&lt;/p&gt;
&lt;p&gt;
	&lt;a&gt;ldap://172.22.1.26:389&lt;/a&gt;: This tells the portal where the LDAP server is located )&lt;/p&gt;
&lt;h3&gt;
	5.4: TEST LDAP CONNECTION :&lt;/h3&gt;
&lt;p&gt;
	Now test your connection to see if it validates.. You can test the connection by clicking &amp;ldquo;Test LDAP Connection&amp;rdquo; button. If it shows successful message, your connection is successful....&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=3bc6ddf0-0394-495e-b186-ed21d551b2e9&amp;groupId=346578"&gt;&lt;img border="0" height="297" src="http://cdn.www.liferay.com/image/image_gallery?uuid=820f53fb-f099-477d-8266-2c020836329d&amp;groupId=14&amp;t=1289364745036" width="793"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	5.5: Users :&lt;/h3&gt;
&lt;p&gt;
	If you wish to change how users login (Ex. Login with &lt;strong&gt;screen&lt;/strong&gt; &lt;strong&gt;name&lt;/strong&gt; / &lt;strong&gt;emailaddress&lt;/strong&gt;), then change the settings in the &lt;strong&gt;&lt;em&gt;Authentication&lt;/em&gt;&lt;/strong&gt;&lt;em&gt; &lt;strong&gt;Search&lt;/strong&gt; &lt;strong&gt;Filter&lt;/strong&gt;&lt;/em&gt; field.&lt;/p&gt;
&lt;h4&gt;
	&lt;strong&gt;5.5.1 Users:&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;
	&lt;u&gt;Provide these values&lt;/u&gt; :&lt;/p&gt;
&lt;p&gt;
	Authentication Search Filter : &lt;strong&gt;(&amp;amp;objectCategory=Person)(mail=@email_address@)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	import search filter: &lt;strong&gt;(objectClass=User)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=a0a17a0f-9d5a-4042-918e-2f7d251b7093&amp;groupId=346578"&gt;&lt;img border="0" height="152" src="http://cdn.www.liferay.com/image/image_gallery?uuid=d6b264f6-4965-4839-80ff-b42a3186a5fc&amp;groupId=14&amp;t=1289364745037" width="419"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	( if objectClass is defined as &amp;ldquo;&lt;strong&gt;User&amp;rdquo;&lt;/strong&gt; in &lt;strong&gt;AD&lt;/strong&gt;, then we have to give &amp;ldquo;&lt;strong&gt;User&amp;rdquo;&lt;/strong&gt; .&lt;/p&gt;
&lt;p&gt;
	[ObjectClass = &lt;strong&gt;User&lt;/strong&gt;, &lt;strong&gt;InetOrgPerson&lt;/strong&gt;,...etc ] )&lt;/p&gt;
&lt;h4&gt;
	&lt;strong&gt;5.5.2 User Mapping :&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;
	Provide these values :&lt;/p&gt;
&lt;p&gt;
	screenName : &lt;strong&gt;sn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	password: &lt;strong&gt;userPassword&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	EmailAddress : &lt;strong&gt;mail&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	first Name : &lt;strong&gt;givenName&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	LastName &lt;strong&gt;: sn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Jobtitle &lt;strong&gt;: title&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Group &lt;strong&gt;: memberOf&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=a727a2cb-d9db-4b79-bbfe-d02f0ed41123&amp;groupId=346578"&gt;&lt;img border="0" height="476" src="http://cdn.www.liferay.com/image/image_gallery?uuid=c3981e8f-ff8c-4e69-944b-a52e020095dc&amp;groupId=14&amp;t=1289364745039" width="366"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
	5.6&amp;nbsp;TEST LDAP USERS:&lt;/h4&gt;
&lt;p&gt;
	Now you can test the groups by clicking &amp;ldquo;&lt;strong&gt;Test&lt;/strong&gt; &lt;strong&gt;LDAP&lt;/strong&gt; &lt;strong&gt;Users&lt;/strong&gt;&amp;rdquo; button. It will show all the Users from Active Directory.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=3ea54b19-7163-4aea-8399-93671e87a889&amp;groupId=346578"&gt;&lt;strong&gt;&lt;img border="0" height="476" src="http://cdn.www.liferay.com/image/image_gallery?uuid=ca3c5ca9-84fb-442b-afc1-0a91b9c942ed&amp;groupId=14&amp;t=1289364745043" width="646"&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
	Step 5.7: Import Users to Liferay&lt;/h4&gt;
&lt;p&gt;
	if you checked &amp;quot;&lt;strong&gt;Import on Startup Enabled&lt;/strong&gt;&amp;quot;, then restart your &lt;strong&gt;App&lt;/strong&gt; Server.&lt;/p&gt;
&lt;p&gt;
	Log back in, go the &lt;strong&gt;Control&lt;/strong&gt; &lt;strong&gt;Panel&lt;/strong&gt;-&amp;gt;&lt;strong&gt;Users&lt;/strong&gt; . Your imported Users will be there!&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=e0c7de20-ebeb-42f2-a734-2ee0de27d166&amp;groupId=346578"&gt;&lt;img border="0" height="130" src="http://cdn.www.liferay.com/image/image_gallery?uuid=b54d100e-086b-4015-b2e9-c2ef9c2a4808&amp;groupId=14&amp;t=1289364745046" width="445"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;&lt;u&gt;Imported Users&lt;/u&gt;&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=69faf56d-00c4-4eac-8481-eedf790cb54f&amp;groupId=346578"&gt;&lt;img border="0" height="140" src="http://cdn.www.liferay.com/image/image_gallery?uuid=636f8c5b-dc7b-4537-bcb6-6c981dbf78e9&amp;groupId=14&amp;t=1289364745047" width="726"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	Step 5.8: Groups&lt;/h3&gt;
&lt;h3&gt;
	5.8.1 Groups&lt;/h3&gt;
&lt;p&gt;
	&lt;u&gt;Provide these values&lt;/u&gt;:&lt;/p&gt;
&lt;p&gt;
	importSearchfilter : (objectClass=&lt;strong&gt;group&lt;/strong&gt;)&lt;/p&gt;
&lt;h3&gt;
	5.8.2: GroupMapping:&lt;/h3&gt;
&lt;p&gt;
	GroupName : &lt;strong&gt;cn&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Description: &lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	User: &lt;strong&gt;member&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=59954e2c-6c08-45fd-84cd-3932a30d0321&amp;groupId=346578"&gt;&lt;img border="0" height="296" src="http://cdn.www.liferay.com/image/image_gallery?uuid=09d6b3f0-9723-41d5-8544-346358b8aa46&amp;groupId=14&amp;t=1289364745049" width="361"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	&lt;br&gt;
	5.9: TEST LDAP GROUPS:&lt;/h3&gt;
&lt;p&gt;
	Now you can test the groups by clicking &amp;ldquo;&lt;strong&gt;Test LDAP Groups&lt;/strong&gt;&amp;rdquo; button. It will show all the Groups under the given &lt;strong&gt;OU&lt;/strong&gt; ( &lt;strong&gt;Tech&lt;/strong&gt;) from Active Directory. Also It will show Members of that groups.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=7a35f476-9c1f-40b0-8219-6aa8b445d7d6&amp;groupId=346578"&gt;&lt;strong&gt;&lt;img border="0" height="304" src="http://cdn.www.liferay.com/image/image_gallery?uuid=d5636f7f-0a68-4f22-824b-956380452ebc&amp;groupId=14&amp;t=1289364745051" width="704"&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	&lt;br&gt;
	5.10. Import Groups to Liferay User Group&lt;/h3&gt;
&lt;p&gt;
	LDAP groups are pulled into &lt;strong&gt;Liferay&lt;/strong&gt; as &lt;strong&gt;UserGroups&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Follow the &amp;ldquo;&lt;strong&gt;Step 4.9: Import Users to Liferay&lt;/strong&gt;&amp;rdquo; which will import groups from &lt;strong&gt;AD&lt;/strong&gt; to &lt;strong&gt;Liferay&lt;/strong&gt; as follows:&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=bfb0dda9-f9f4-463f-9dba-658c40531c73&amp;groupId=346578"&gt;&lt;strong&gt;&lt;img border="0" height="289" src="http://cdn.www.liferay.com/image/image_gallery?uuid=ac4258e4-1390-4a5a-a7da-10f7ad6d99b7&amp;groupId=14&amp;t=1289364745055" width="720"&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
	6. AD-GROUPS &amp;ndash; USERS Structure&lt;/h2&gt;
&lt;p&gt;
	( Create the following groups in AD, &lt;strong&gt;test1&lt;/strong&gt;, &lt;strong&gt;ss&lt;/strong&gt; &amp;amp; &lt;strong&gt;sss&lt;/strong&gt; under the &amp;ldquo;&lt;strong&gt;Tech&lt;/strong&gt;&amp;rdquo; [OU] and assign some users to that groups)&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=c684d6e5-aebf-471b-946b-921937bbed22&amp;groupId=346578"&gt;&lt;img border="0" height="239" src="http://cdn.www.liferay.com/image/image_gallery?uuid=c69a9401-6e78-4331-9f77-e357907d4074&amp;groupId=14&amp;t=1289364745060" width="634"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
	&lt;br&gt;
	7. Export Users to AD&lt;/h2&gt;
&lt;p&gt;
	&lt;br&gt;
	We can exports all the users from &lt;strong&gt;liferay&lt;/strong&gt; to &lt;strong&gt;AD&lt;/strong&gt; by providing these values.&lt;/p&gt;
&lt;p&gt;
	Users DN = &lt;strong&gt;ou=Tech,dc=mpowerglobal,dc=com&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	User Default Object Classes = &lt;strong&gt;top,person,User,organizationPerson&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Groups DN = &lt;strong&gt;ou=groups,dc=mpowerglobal,dc=com&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Group Default Object Classes= &lt;strong&gt;top, group&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=a48847dd-7bea-42f6-860d-46de3589038d&amp;groupId=346578"&gt;&lt;strong&gt;&lt;img border="0" height="320" src="http://cdn.www.liferay.com/image/image_gallery?uuid=54e6ab41-d793-4482-8f2f-c52d24e0994d&amp;groupId=14&amp;t=1289364745035" width="385"&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	( Note : if you give object name &amp;ldquo;&lt;strong&gt;User&lt;/strong&gt;&amp;rdquo; in &lt;strong&gt;User Default Object Classes &lt;/strong&gt;,&lt;/p&gt;
&lt;p&gt;
	In &lt;strong&gt;AD,&lt;/strong&gt; object type will be &amp;ldquo;&lt;strong&gt;User&amp;rdquo;&lt;/strong&gt; )&lt;/p&gt;
&lt;h3&gt;
	7.1: Add Liferay users: Go to Control Panel &amp;ndash; Users &amp;ndash; Add users&lt;/h3&gt;
&lt;p&gt;
	After setting the above value in control panel, if you create users in Liferay, it will be exported to &lt;strong&gt;AD.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=69faf56d-00c4-4eac-8481-eedf790cb54f&amp;groupId=346578"&gt;&lt;img border="0" height="123" src="http://cdn.www.liferay.com/image/image_gallery?uuid=85cbbdcf-eec1-4b15-83b1-f0772521d128&amp;groupId=14&amp;t=1289364745062" width="647"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
	&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;
	7.2: Verify AD Users from Liferay:&lt;/h3&gt;
&lt;p&gt;
	All the Users from &lt;strong&gt;Liferay&lt;/strong&gt; will be populated in &lt;strong&gt;AD&lt;/strong&gt; as follows:&lt;/p&gt;
&lt;p&gt;
	( &lt;strong&gt;Selected Users&lt;/strong&gt; from below screen has been exported from &lt;strong&gt;Liferay&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=8c95badd-2dfa-40f6-9f28-debe07724e3f&amp;groupId=346578"&gt;&lt;img border="0" height="293" src="http://cdn.www.liferay.com/image/image_gallery?uuid=1d764320-efad-439c-be84-1503cd148fbc&amp;groupId=14&amp;t=1289364745064" width="763"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;
	8. Login into Liferay with Imported User&lt;/h2&gt;
&lt;p&gt;
	&lt;span style="line-height: 1.5;"&gt;We need to uncheck this below option in &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;AD&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt; : &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;&amp;ldquo;User must change password at next logon&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	If this checkbox is unchecked , then you can login with that particular user into Liferay.&lt;/p&gt;
&lt;p&gt;
	If not, we need to &lt;strong&gt;login&lt;/strong&gt; again in &lt;strong&gt;AD&lt;/strong&gt; and change &lt;strong&gt;password&lt;/strong&gt;, then Import to Liferay.&lt;/p&gt;
&lt;p&gt;
	&lt;a href="http://www.liferay.com/c/document_library/get_file?uuid=bf6f0154-b7c8-45f4-abaf-140140076f3a&amp;groupId=346578"&gt;&lt;img border="0" height="484" src="http://cdn.www.liferay.com/image/image_gallery?uuid=84d5931b-efdf-444c-83ce-f0ba25180f95&amp;groupId=14&amp;t=1289364745065" width="400"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
	&lt;br&gt;
	9. Troubleshooting&lt;/h2&gt;
&lt;p&gt;
	&lt;strong&gt;1. If User is not imported AD to Liferay,&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	a. Restart &lt;strong&gt;AD&lt;/strong&gt; Server / &lt;strong&gt;Liferay&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	b. Make sure all the attributes are given while creating User in AD.&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;For ex, &lt;/strong&gt;(Screen Name, Password, Email Address, First Name, and Last Name)&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br&gt;
	&lt;span style="line-height: 1.5;"&gt;&lt;strong&gt;2. If imported user is not able to login into &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;strong style="line-height: 1.5;"&gt;Liferay&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt;, uncheck the below option in AD while&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	creating user:&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;&amp;ldquo;User must change password at next logon&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br&gt;
	&lt;strong&gt;&lt;span style="line-height: 1.5;"&gt;3. If &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;Group&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt; is not imported from &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;AD&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt; to &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;Liferay&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt;,&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	a. Make sure all the attributes are given while creating Group in AD,&lt;/p&gt;
&lt;p&gt;
	&lt;strong&gt;For ex, &lt;/strong&gt;(name,description)&lt;/p&gt;
&lt;p&gt;
	&lt;span style="line-height: 1.5;"&gt;b. If No member is assigned to &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;Group&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt; in &lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;AD&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt;, That group will not import to Liferay.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;
	&amp;nbsp;&lt;/p&gt;
&lt;p&gt;
	&lt;br&gt;
	&lt;strong style="line-height: 1.5;"&gt;4.&lt;/strong&gt;&lt;span style="line-height: 1.5;"&gt;&amp;nbsp;&lt;/span&gt;&lt;strong style="line-height: 1.5;"&gt;Password Policy&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
	Portal can be configured to use &lt;strong&gt;LDAP&lt;/strong&gt; password policies. To configure the &lt;strong&gt;Portal&lt;/strong&gt; to use &lt;strong&gt;LDAP's&lt;/strong&gt; password policy, go to&lt;/p&gt;
&lt;p&gt;
	&amp;middot; &amp;gt; Control Panel&lt;/p&gt;
&lt;p&gt;
	&amp;middot; &amp;gt; &amp;quot;Settings&amp;quot; tab&lt;/p&gt;
&lt;p&gt;
	&amp;middot; &amp;gt; &amp;quot;Authentication&amp;quot; tab&lt;/p&gt;
&lt;p&gt;
	&amp;middot; &amp;gt; &amp;quot;LDAP&amp;quot; tab&lt;/p&gt;
&lt;p&gt;
	&amp;middot; &amp;gt; and under the &amp;quot;Password Policy&amp;quot; section, click the &amp;quot;Use LDAP Password &lt;strong&gt;Policy&lt;/strong&gt;&amp;quot; checkbox on (at the bottom)&lt;/p&gt;
&lt;p&gt;
	If that has been done correctly, when you try and view the liferay &lt;strong&gt;Control&lt;/strong&gt; &lt;strong&gt;Panel&lt;/strong&gt; - &lt;strong&gt;Password&lt;/strong&gt; &lt;strong&gt;Policy&lt;/strong&gt;, you will get a message saying that &amp;ldquo;&lt;strong&gt;You are using LDAP's password policy. Please change your LDAP password policy settings if you wish to use a local password policy&amp;rdquo;.&lt;/strong&gt;&lt;/p&gt;
&lt;p align="center"&gt;
	&amp;nbsp;&lt;/p&gt;</description>
      <pubDate>Fri, 12 Apr 2013 19:20:43 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;LDAP+with+AD+in+Liferay+6.0.5</guid>
      <dc:creator>Corné Aussems</dc:creator>
      <dc:date>2013-04-12T19:20:43Z</dc:date>
    </item>
    <item>
      <title>Tomcat tips 1.1</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Tomcat+tips</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== STRICT_SERVLET_COMPLIANCE ==

When **STRICT_SERVLET_COMPLIANCE** is set to true, the value of **FWD_SLASH_IS_SEPARATOR** will be also set to true (and values of some other properties). ////

//If this is true then the / (forward slash) character will be treated as a ****separator****. Note that this character is frequently used in cookie path attributes and some browsers will fail to process a cookie if the path attribute is quoted as is required by a strict adherence to the specifications. This is highly likely to break session tracking using cookies.//


To summarize the above, what's happening is the cookie's ****Path**** value is being enclosed in quotes when ****FWD_SLASH_IS_SEPARATOR**** is ****true****. Browsers don't expect this and thus when the browser receives a cookie it doesn't send that cookie back on subsequent requests because the browser doesn't think the cookie's Path value matches the user's path. Essentially cookie-based sessions are broken in major browsers and curl unless -Dorg.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR=false is passed on boot.


Ive tested this with all browsers and it seems only ****Opera**** understands this feature correctly.</description>
      <pubDate>Fri, 12 Apr 2013 08:27:18 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Tomcat+tips</guid>
      <dc:creator>Igor Spasić</dc:creator>
      <dc:date>2013-04-12T08:27:18Z</dc:date>
    </item>
    <item>
      <title>Web Proxy Portlet 1.6</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Web+Proxy+Portlet</link>
      <description>&lt;&lt;TableOfContents&gt;&gt;

== Introduction ==

The Web Proxy portlet allows showing any website (or any content accessible using HTTP) as if it was a portlet. It's based on the Portlet Bridge project ([[http://www.portletbridge.org/|http://www.portletbridge.org/]]) version 1.1.2. 

== Features ==

The following features are provided thanks to the portlet bridge project:

* Getting content from a downstream site
* Proxy configuration (including NTLM and Basic authentication)
* NTLM and Basic authentication as preferences
* Using an xsl stylesheet to rewrite the content from the downstream site
* Proxying of remote resources (e.g. images, flash etc.)
* Regular expression defining which URL's are in the portlet and which should be regular links
* XSL Stylesheets packaged as part of the portlet or remote (URL based)
* Links to binary files
* Rewriting CSS urls
* Moving javascript and css links out of the head
* Hiding of downstream URLs and configurable scope
* Back button and refresh support
* Base tag support
* Pluggable authentication
* Configurable regular expressions for Javascript and CSS rewriting


Source: [[http://www.portletbridge.org/features.html|http://www.portletbridge.org/features.html]]


The Liferay Portal integration adds the following on top of this:

* Configuration through the Web UI of: 
** URL of the remote site/content
** Scope of links to be rewritten
** Proxy configuration
** XSL to transform the content

== Deploying the web proxy portlet ==

The portlet is already installed on standard installations.


Have a look at the "Sample" category.

== Deploying portlet bridge manually ==

Some times it might be desired to install portlet bridge manually instead of using the Web Proxy portlet provided by Liferay. This could be the case if you have modified the source code or if there is a newer version than the one provided by Liferay. 


While portletbridge comes prepared to be installed in Liferay it's not been adapted to its latest version, so there are a few extra steps needed. Note that you may need to change the version numbers used below to correspond to the ones of the version of Liferay you are using: 


1. Download the .war file and extract its content to some folder, eg with:

{{{
 jar xvf portletbridge-portlet.war
}}}


2. Modify WEB-INF/liferay-display.xml by changing the DTD from 

{{{
 &lt;!DOCTYPE display PUBLIC "-//Liferay//DTD DISPLAY 2.0.0//EN" "http://www.liferay.com/dtd/liferay-display_2_0_0.dtd"&gt;
}}}


to

{{{
 &lt;!DOCTYPE display PUBLIC "-//Liferay//DTD Display 4.0.0//EN" "http://www.liferay.com/dtd/liferay-display_4_0_0.dtd"&gt;
 &lt;!--&lt;!DOCTYPE display PUBLIC "-//Liferay//DTD DISPLAY 2.0.0//EN" "http://www.liferay.com/dtd/liferay-display_2_0_0.dtd"&gt;--&gt;
}}}


3. Modify WEB-INF/liferay-portlet.xml by changing the DTD from 

{{{
 &lt;!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 3.5.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_3_5_0.dtd"&gt;
}}}


to

{{{
 &lt;!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.3.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_3_0.dtd"&gt;
 &lt;!--&lt;!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 3.5.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_3_5_0.dtd"&gt;--&gt;
}}}


4. Repackage all the content with the modified files, eg through:

{{{
 jar cvf portletbridge-portlet.war *
}}}


5. Deploy the .war file onto liferay


Note: the jar command is an executable that comes with your Java VM, you may need to install a Java SDK to make that program available to you. 

== Configuration ==

Enter the URL that the portlet shall show as default.


The scope is a regular expression matched to the absolute URL of the target of a link. 
If the expression matches, the link is rewritten such that the request goes to the proxy portlet, and the next page would show up inside the portlet.
If the expression does not match, the link is not rewritten, so the browser would get the original link and may show the next page without using the proxy portlet and portal. If the browser cannot access the referenced page without a proxy inbetween following that link is impossible (and maybe that is what you want).


You may enter an XSL-T stylesheet (no url or filename, the stylesheet itself) if you want the pages to be processed while the content is proxied. You can use this if e.g. you want to hide some parts (e.g. remove all the links that cannot be followed through the proxy anyway).


== References ==

The Web Proxy Portlet is one of Liferay's [[Out of The Box Portlets|Out of The Box Portlets]]</description>
      <pubDate>Wed, 10 Apr 2013 09:53:05 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Web+Proxy+Portlet</guid>
      <dc:creator>Hiran Chaudhuri</dc:creator>
      <dc:date>2013-04-10T09:53:05Z</dc:date>
    </item>
    <item>
      <title>m2e-liferay - Early access testing 1.0</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;m2e-liferay+-+Early+access+testing</link>
      <description>[[m2e-liferay - early access]]</description>
      <pubDate>Mon, 08 Apr 2013 15:38:44 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;m2e-liferay+-+Early+access+testing</guid>
      <dc:creator>Gregory Amerson</dc:creator>
      <dc:date>2013-04-08T15:38:44Z</dc:date>
    </item>
    <item>
      <title>Working with Database Views in Liferay 1.2</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Working+with+Database+Views+in+Liferay</link>
      <description>Couple of months ago I had to create Database View with LR (Liferay) using service builder. Searching on web I couldn’t find any tutorial or solution. LR don’t know anything like views of databases. After some night work I came to know that it is very easy, as View is just an entity in DB so by fooling (not actually fooling) service builder that our View is an entity you can very easily create service classes and other functionalities of View via service builder.

 
Trick is to just create an entity in service.xml instead of view, run your service builder, which will create all necessary classes for that entity (actually view), run your LR project which will create this entity / view in actual DB. After this delete the created entity and run manual sql to create view of same name as it was entity in LR. Now LR will consider this view as an entity and enjoy your rest of work.

 
Let’s have a simple but practical example in which there will be two entities and one view.


I am using LR 6.1 JSF for front end, tomcat 7, and MySQL as DB for this example.

 
Two entities,


Citizen (//Citizen_Id//, First_Name, Middle_Name, Last_Name, Mobile, Marital_Status_Id) where Marital_Status_Id is you can say the FK from Marital_Status entity, I am handling FK at front end in this example.


Marital_Status (//Marital_Status_Id//, Marital_Status)


and one View is our discussion point


Citizen_View (//Citizen_Id//, Complete_Name, Martal_Status) where Complete_Name will be concatenation of First_Name, Middle_Name and Last_Name of Citizen entity where as Marital_Status will come from Marital_Status entity.

 
Step 1:


Create service.xml via service builder. Here is the complete service.xml for our example.

 
&lt;?xml version=//"1.0"// encoding=//"UTF-8"//?&gt;


&lt;!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.1.0//EN" "[[http://www.liferay.com/dtd/liferay-service-builder_6_1_0.dtd%22%3E|http://www.liferay.com/dtd/liferay-service-builder_6_1_0.dtd"&gt;]]//////////////////


&lt;service-builder package-path=//"com.view.test"//&gt;

      &lt;author&gt;ayyazk&lt;/author&gt;    


&lt;namespace&gt;ABC&lt;/namespace&gt;   

    &lt;entity name=//"Citizen"// local-service=//"true"// remote-service=//"true"//&gt;             &lt;!-- PK fields --&gt;             &lt;column name=//"Citizen_Id"// type=//"long"// primary=//"true"// /&gt;             &lt;column name=//"First_Name"// type=//"String"// /&gt;            &lt;column name=//"Middle_Name"// type=//"String"// /&gt;            &lt;column name=//"Last_Name"// type=//"String"// /&gt;            &lt;column name=//"Mobile"// type=//"String"// /&gt;            &lt;column name=//"Marital_Status_Id"// type=//"long"///&gt;      &lt;/entity&gt;           


&lt;entity name=//"Marital_Status"// local-service=//"true"// remote-service=//"true"//&gt;      

     &lt;!-- PK fields --&gt;            &lt;column name=//"Marital_Status_Id"// type=//"long"// primary=//"true"// /&gt;                       &lt;column name=//"Marital_Status"// type=//"String"// /&gt;      &lt;/entity&gt;           &lt;entity name=//"Citizen_View"// local-service=//"true"// remote-service=//"true"//&gt;             &lt;!-- PK fields --&gt;           &lt;column name=//"Citizen_Id"// type=//"long"// primary=//"true"// /&gt;                       &lt;column name=//"Complete_Name"// type=//"String"// /&gt;            &lt;column name=//"Marital_Status"// type=//"String"// /&gt;      &lt;/entity&gt;          


&lt;/service-builder&gt;

 
Run your service builder, which will create all service classes for our entities.


Step 2:


Run your server, upon successful run LR will create our desired entities in Database.


Step 3:


Here is the tricky point, drop your entity named “Citizen_View”, and run following sql command in your database.

 
CREATE VIEW abc_Citizen_View AS

      SELECT         Citizen_Id ,  CONCAT (First_Name, ' ' ,   Middle_Name, ' ' ,   Last_Name) Complete_Name ,      m.Marital_status      FROM  abc_citizen  c         INNER JOIN abc_marital_status m      ON( m.Marital_Status_ID = c.Marital_Status_ID ); 


Which will create View with the same name as was your entity in DB, if you will not delete the entity first this command will give you error like entity already exist with same name.

 
Step 4:


Populate your two entities, “Citizen” and “Marital_Status”, you will see that your view is already populated according to entries of above two tables.

  
Done, just code your required logic as data is available in view

 
Following is code proof which works with our example if we run our portlet.

 ////////////////////////////////////////////////////////////////////////////////////////////////////////

**public** String getViewData() **throws** SystemException, PortalException{

                       List&lt;Citizen_View&gt; viewList = Citizen_ViewLocalServiceUtil.//getCitizen_Views//            (0, Citizen_ViewLocalServiceUtil.//getCitizen_ViewsCount//());                       System.//out//.println("Size of Citizen_View List "+viewList.size());           for (Citizen_View citizen_View : viewList) {                  System.//out//.println("Name "+citizen_View.getComplete_Name());                  System.//out//.println("Marital Status: "+ citizen_View.getMarital_Status());            }                       ///////////////////////////// another way///////////////////////////////////                       Citizen_View view = Citizen_ViewLocalServiceUtil.//getCitizen_View//(1);            System.//out//.println("***************************************************");            System.//out//.println("Name "+view.getComplete_Name());            System.//out//.println("Marital Status: "+ view.getMarital_Status());                                  return "";                 


}

 
If you feel any problem regarding above concepts feel free to ask.

          </description>
      <pubDate>Mon, 08 Apr 2013 13:19:35 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Working+with+Database+Views+in+Liferay</guid>
      <dc:creator>Kashif Ayyaz Haider</dc:creator>
      <dc:date>2013-04-08T13:19:35Z</dc:date>
    </item>
    <item>
      <title>Liferay IDE Remote Server Adapter 1.8 (minor-edit)</title>
      <link>http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Liferay+IDE+Remote+Server+Adapter</link>
      <description>== Requirements For Tutorial ==
*[[http://www.liferay.com/downloads/liferay-projects/liferay-ide| Liferay IDE 1.6.2]]
*[[http://sourceforge.net/projects/lportal/files/Liferay%20Portal/6.1.1%20GA2/liferay-portal-tomcat-6.1.1-ce-ga2-20120731132656558.zip| Liferay Portal Server 6.1.1 CE GA2]] 
* Liferay Portal Server 6.1.x running remotely (Tomcat, JBoss, Glassfish servers supported, [[http://issues.liferay.com/browse/IDE-874|Proxies]] and [[http://issues.liferay.com/browse/IDE-891|SSL connections]] not supported at this time)
* OmniAdmin username/password for remote Liferay Portal instance

== Introduction ==

The Remote Server Adapter is a feature of Liferay IDE where you can deploy your Liferay projects to a remote Liferay Portal instead of using a locally launched and managed Portal server.  The remote instance of Liferay Portal must have the [[http://www.liferay.com/marketplace/-/mp/application/15193785?_7_WAR_osbportlet_backURL=%2Fmarketplace%2F-%2Fmp%2Fcategory%2F11232561|Remote IDE Connector application]] installed from Liferay marketplace.  This application installs the server-manager-web plugin for Liferay that provides an API for Liferay IDE's Remote Server Adapter to use for all its remote operations.

== Configure the Remote Server Adapter ==

You can configure both the remote server adapter and optionally installing the Remote IDE Connector into the remote Liferay Portal instance all through the Remote Server Wizard in Liferay IDE.  Below are the steps to follow:

# Ensure that the remote Liferay Portal instance is running and you can login using OmniAdmin username/password
# In Eclipse with Liferay IDE plugins installed, go to new Server wizard //File &gt; New &gt; Other &gt; Server &gt; Liferay &gt; Remote Liferay Server//\\{{wiki_remote_server_adapter_wizard_1.png}}
# Select Next
# The next page of remote server configuration remote server is to define the Liferay Portal Runtime Stub.  This will allow projects created for this server to use this runtime stub for statisfying jar dependencies needed to compile various Liferay projects.  Select bundle type based on your local Liferay Portal Tomcat bundle, then browse to the bundle installation directory. \\{{wiki_remote_server_adapter_wizard_2.png}}
# Select Next
# The next page is for configuring the connection to the remote Liferay Portal instance.  Enter in the host, port and OmniAdmin username/password.  The next two fields can be left as the defaults unless you have made changes to your remote Portal environment.\\{{wiki_remote_server_adapter_wizard_3.jpg}}
# In order for this connection to the remote Liferay Portal to work, the Remote IDE Connector application must be installed in the remote Portal.  If you have not installed that application, you can click the link at the bottom of the page to jump to the marketplace control panel to install the Remote IDE connector. \\{{wiki_remote_server_adapter_marketplace_1.png}}
# Click the //Free// button to purchase the Remote IDE Connector application and follow the onscreen prompts. 
# Once it is purchase select the //Purchased// page in the control panel. \\{{wiki_remote_server_adapter_marketplace_2.png}}
# Download and install the Remote IDE Connector, once it is installed return to Eclipse and the Remote Server config wizard
# Select //Validate connection// and no warnings or errors should be displayed if you have supplied the correct OmniAdmin username/password. \\{{wiki_remote_server_adapter_wizard_4.png}}
# Select //Finish//
# Once you select Finish, the new Remote Server will be available in the Servers view and if the connection settings were correct, Eclipse will connect to the remote server.  Then the remote liferay logs will be displayed in Eclipse's console. If your remote server is in debug mode, the Eclipse java debugger will be attached to the remote process automatically.\\{{wiki_remote_server_adapter_console_1.png}}
# If the settings are invalid and the connection can't be established, you can modify the Remote Server settings at any time by double-clicking the server instance in the Servers view and modify the settings in the configuration editor.  

== Using the Remote Server Adapter ==

Once you have the Remote Server correctly configured and connected in Eclipse, you can begin using it as you would a local Liferay Portal Tomcat server, publishing projects to the server.

# Right-click the server and choose //Add and Remove modules...//
# Select Liferay projects you wish to publish to the remote server, select //Finish//
# The deployment process should start and after it is published to remote server you should see a message saying plugin is deployed\\{{wiki_remote_server_adapter_console_1.png}}
# After you have made the initial remote deployment, if you make any changes to your project, you will need to publish these changes (or have them published automatically in the settings).  To invoke a publish operation (after having modified some project files) right click on the server in the Servers view and select //Publish//\\{{wiki_remote_server_adapter_publish_1.png}}
# If you want to modify the publish operation behavior, you can do that in the server configuration editor (double-click server in Servers view) \\{{wiki_remote_server_adapter_configuration_editor.jpg}}#If you receive errors, visit the [[http://www.liferay.com/community/forums/-/message_boards/category/4627757|Liferay IDE forums]] and post the warning/error to try to get help.</description>
      <pubDate>Mon, 08 Apr 2013 09:45:58 GMT</pubDate>
      <guid isPermaLink="false">http://www.liferay.com/de/community/wiki?p_p_id=36&amp;p_p_lifecycle=0&amp;p_r_p_185834411_nodeId=1071674&amp;p_r_p_185834411_title=&amp;Liferay+IDE+Remote+Server+Adapter</guid>
      <dc:creator>Gregory Amerson</dc:creator>
      <dc:date>2013-04-08T09:45:58Z</dc:date>
    </item>
  </channel>
</rss>

