Hola,
estoy desarrollando un portlet con PHP. He conseguido que conecte a la base de datos que tengo configurada en el Tomcat.
El problema lo tengo cuando intento conectarme a una base de datos externa vía JNDI.
Estoy utilizando Liferay 5.2.3 + Tomcat 6.0.18
Os explico los pasos que he seguido:
He añadido en el fichero META-INF/context.xml del portlet lo siguiente:
<Context
antiJARLocking="true"
antiResourceLocking="true"
>
<Resource name="jdbc/MySQLDatabase"
type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
username=""
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://:3306/prueba"
maxActive="20"
maxIdle="4"/>
</Context>
En el fichero WEB-INF/web.xml del portlet he añadido:
<web-app>
...
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MySQLDatabase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
El fichero index.php contiene el siguiente código:
<?php
echo 'Hello World!'."<br/>";
$dbh = new PDO('java:comp/env/jdbc/MySQLDatabase');
if ($dbh) {
$sql="SELECT * FROM user_";
foreach ($dbh->query($sql) as $row) {
echo "
".$row['screenName'] . "
";
}
}
?>
He intentado añadir el nuevo data source en el context.xml del tomcat pero tampoco funciona.
He probado de cambiar la cadena JNDI por: java:jdbc/MySQLDatabase o java_liferay:jdbc/MySQLDatabase o
java_liferay:comp/env/jdbc/MySQLDatabase
En todos los casos el resultado es el mismo, el portlet se carga en la página pero me aparece el siguiente mensaje:
Hello World!
/C:/Proyectos/liferay-portal-5.2.3/tomcat-6.0.18/temp/1-helloworld/index.php:4: Fatal Error: 'java_liferay:jdbc/MySQLDatabase' is an unknown PDO JNDI data source.
Álguien tiene idea de qué puede estar pasando, qué no estoy haciendo bien?
Muchas gracias de antemano,
Juan
Please sign in to flag this as inappropriate.