This wiki does not contain official documentation and is currently deprecated and read only. Please try reading the documentation on the Liferay Developer Network, the new site dedicated to Liferay documentation. DISCOVER Build your web site, collaborate with your colleagues, manage your content, and more. DEVELOP Build applications that run inside Liferay, extend the features provided out of the box with Liferay's APIs. DISTRIBUTE Let the world know about your app by publishing it in Liferay's marketplace. PARTICIPATE Become a part of Liferay's community, meet other Liferay users, and get involved in the open source project. « Volver a Portlets
Add Datasource to Portlet
Introduction
This article describes how to add an additional data source to your portlets.
Environment
This article was written with the following environment:
- Container: Tomcat 6.0.18 + Liferay 5.2.3
- IDE: NetBeans IDE 6.7 + Portal Pack 3.0.7
- Database: MySQL 5.1
Procedure
Declare the Datasource
First, edit the file $CATALINA_HOME/context.xml and add the following lines:
<Resource name="jdbc/mydb"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="username"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb?autoReconnect=true"/>
Add the lines before closing the tag context: </Context>
Add Datasource to Portlet
Second, create a new portlet, and now we can add the following lines in the view jsp of our portlet:
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="java.sql.*, javax.portlet.*, javax.naming.*, javax.sql.*" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects />
<%PortletPreferences prefs = renderRequest.getPreferences();%>
VIEW MODE
<%
String DATASOURCE_CONTEXT = "java:comp/env/jdbc/mydb";
Connection result = null;
try {
Context initialContext = new InitialContext();
if ( initialContext == null){
out.println("JNDI problem. Cannot get InitialContext.");
}
DataSource datasource = (DataSource)initialContext.lookup(DATASOURCE_CONTEXT);
if (datasource != null) {
result = datasource.getConnection();
out.println("Lookup datasource.");
Statement stmt = result.createStatement();
ResultSet rs = stmt.executeQuery("select * from mytable");
while(rs.next()){
out.println (rs.getString(1));
}
stmt.close();
result.close();
}
else {
out.println("Failed to lookup datasource.");
}
}
catch ( NamingException ex ) {
out.println("Cannot get connection: " + ex);
}
catch(SQLException ex){
out.println("Cannot get connection: " + ex);
}
%>
We are using the data source declared "jdbc/mydb," and if it is available we start using it. If not available, the data source is not used.
59512 Accesos