Pentaho

De Wikillano

PENTAHO

una vez instalado un tomcat5.5 + jdk1.5 + mysql5 + ant + conector mysql

== Desactivar seguridad en tomcat ==


tomcat_security=no en el script de arranque
   * descargamos pentaho_j2ee_deployments-1.6.0.GA.863-a.zip
   * descargamos pentaho_solutions-<version>.zip
   * descargamos pentaho_demo_mysql5-1.6.0.GA.863.zip


== Crear las bbdd ==


   * quartz
   * hibernate
   * shark

con el script create_db.sql y para la bbdd sampledata utilizamos SampleDataDump_MySql.sql dentro del paquete pentaho_demo_mysql5-1.6.0.GA.863.zip


cuidado con este uĺtimo script ya que tiene usuarios definidos para acceder a la bbdd que crea.

yo he creado un usuario para todas las bbdd pentaho/pentaho y le damos permisos sobre la 4 bbdd

copiamos los datasources (modificados) en server.xml

en mi caso es el siguiente:


<Context path="/pentaho" docbase="webapps/pentaho/">

<Resource name="jdbc/SampleData" auth="Container" type="javax.sql.DataSource" maxActive="20"
maxIdle="5" maxWait="10000" username="pentaho" password="pentaho"
factory="org.apache.commons.dbcp.Jira report with pentaho!" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/sampledata" />

<Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.Jira report with pentaho!" maxActive="20" maxIdle="5"
maxWait="10000" username="pentaho" password="pentaho"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/hibernate" />

<Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.Jira report with pentaho!" maxActive="20" maxIdle="5"
maxWait="10000" username="pentaho" password="pentaho"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/quartz" />

<Resource name="jdbc/Shark" auth="Container" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.Jira report with pentaho!" maxActive="20" maxIdle="5"
maxWait="10000" username="pentaho" password="pentaho" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/shark" />
</Context>

se puede observar como mi usuario es el mismo para los 4 datasources, tb se ha modificado el conector y la url a las bbdd

desempaquetamos pentaho_j2ee_deployments-1.6.0.GA.863-a.zip

modificamos build.properties

mysql dir driver
mysql conector name

..etc

creamos los war mediante:

ant -> war-pentaho-tomcat-mysql

una vez compilado en la carpeta build (creada al realizar el ant) tendremos los war necesarios para hacer el deploy de pentaho

yo descomprimí el pentaho.war en /var/lib/tomcat5/webapps

   * damos permisos a pentaho/* tomcat55 nogroup
   * modificamos el puerto 8080 por 8180 del tomcat en web.xml ubicado en /webapps/pentaho/WEB-INF cuidado con el localhost, debemos poner la ip
   * modificamos el hibernate.cfg.xml (si no, da errores) no entiendo porque volvemos a declarar aquí una conexión a la bbdd hibernate si ya creámos un datasource para ello, en fin ...

si nos fijamos existen 3 .war más en el directorio build, tb debemos hacer deploy de ellos:

   * sw-style.war
   * pentaho-style.war
   * pentaho-portal-layout.war

dentro de -> pentaho_j2ee_deployments-1.6.0.GA.863-a/build/pentaho-wars/tomcat/mysql5/

   * pentaho.war

problema:

Al desplegar el pentaho.war, tomcat muestra un error de pentaho, no puede crear el pentaho.log (permiso denegado)

solución: en el fichero WEB-INF/classes/log4j.xml debemos modificar la siguiente ruta

<param name="File" value="pentaho.log"/> por <param name="File" value="/tmp/pentaho.log"/>

despues de desplegar pentaho, copiamos el directorio pentaho-solutions en /var/lib/tomcat5.5/webapps/pentaho y modificar el fichero web.xml indicando la ruta del mismo. [[ IMPORTANTE]] dar permisos al usuario tomcat5 a la carpeta pentaho-solutions

problema: pentaho por defecto usa un fichero .xml que utiliza para conectarse a la bbdd hibernate mediante un user concreto "hibuser" que debemos adaptar el usuario por el nuestro.


<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>

<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<property name="hibernate.generate_statistics">true</property>
<property name="hibernate.cache.use_query_cache">true</property>

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="dialect">org.pentaho.repository.MySQL5InnoDBDialect</property>
<property name="connection.username">hibuser</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">10</property>
<property name="show_sql">false</property>
<property name="hibernate.jdbc.use_streams_for_binary">true</property>
</session-factory>
</hibernate-configuration>
Problema:
Al hacer login a la aplicación, tomcat nos muestra un error:
Estado HTTP 500 -
type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

org.apache.jasper.JasperException: Adding text to an XML document must not be null
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke
(FilterSecurityInterceptor.java:107)
org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter
(FilterSecurityInterceptor.java:72)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.switchuser.SwitchUserProcessingFilter.doFilter
(SwitchUserProcessingFilter.java:335)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
com.pentaho.security.SecurityStartupFilter.doFilter(SecurityStartupFilter.java:76)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter
(AnonymousProcessingFilter.java:125)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter
.java:142)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
com.pentaho.security.RequestParameterAuthenticationFilter.doFilter
(RequestParameterAuthenticationFilter.java:164)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:108)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
com.pentaho.security.HttpSessionReuseDetectionFilter.doFilter
(HttpSessionReuseDetectionFilter.java:130)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter
(HttpSessionContextIntegrationFilter.java:193)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter
(SecurityContextHolderAwareRequestFilter.java:81)
org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)

si miramos los logs de tomcat podemos ver como pentaho intenta escribir en el siguiente fichero de log /var/lib/tomcat5.5/webapps/pentaho/pentaho-solutions/system/logs/audit/PentahoAuditLog.log solucion:

para solucionar este problema debemos dar permisos a la carpeta pentaho-solutions

Herramientas personales