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
