2011-03-24 10 views
8

Quiero utilizar Birt Reports en un proyecto web php. Por lo tanto, instalé el recomendado Java Bridge y BIRT Runtime moviendo JavaBridgeTemplate621.war y birt.war a mi Tomcat.Uso de Eclipse BIRT Diseñador de informes a través de PHP

Después de eso me escribió una breve clase llamando a la BirtEngine:

try { 
    $ctx = java_context()->getServletContext(); 
    $this->birdEngine = java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx); 
    java_context()->onShutdown(
     java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook() 
    ); 
} catch (java_InternalException $e) { 
    die($e->getMessage()); 
} 

Como reconozco que $e->getMessage() vuelve "" que echar un vistazo a la catalina.out y allí encontraron esta excepción:

23.03.2011 15:02:43 org.apache.cxf.interceptor.AttachmentInInterceptor handleMessage 
INFO: AttachmentInInterceptor skipped in HTTP GET method 
23.03.2011 15:02:43 org.apache.cxf.interceptor.StaxInInterceptor handleMessage 
INFO: StaxInInterceptor skipped. 
23.03.2011 15:02:43 org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor handleMessage 
INFO: ReadHeadersInterceptor skipped in HTTP GET method 
23.03.2011 15:02:43 org.apache.cxf.phase.PhaseInterceptorChain doIntercept 
INFO: Interceptor has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: No such operation: 
     at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:77) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) 
     at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78) 
     at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92) 
     at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:285) 
     at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:175) 
     at org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFServlet.java:157) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
     at java.lang.Thread.run(Thread.java:662) 
java.lang.ClassNotFoundException: org.eclipse.birt.php.birtengine.BirtEngine 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:247) 
     at php.java.bridge.Util.classForName(Util.java:1518) 
     at php.java.bridge.JavaBridge.CreateObject(JavaBridge.java:445) 
     at php.java.bridge.Request.handleRequest(Request.java:444) 
     at php.java.bridge.Request.handleRequests(Request.java:500) 
     at php.java.bridge.http.ContextRunner.run(ContextRunner.java:145) 
     at php.java.bridge.ThreadPool$Delegate.run(ThreadPool.java:60) 

Especialmente esta línea lleva mi atención:

java.lang.ClassNotFoundException: org.eclipse.birt.php.birtengine.BirtEngine 

Pero cada uno intenta obtener ayuda de google y los sitios web comunes fallaron. Así que espero que alguien de este sitio pueda ayudarme.

+0

¿A qué recomendación se refiere? ¿Has probado var_dump() o reflexión sobre la Excepción devuelta? ¿Qué línea está arrojando la excepción? – hakre

+0

Tu clase no puede encontrar el motor BIRT. ¿Dónde desplegó la clase que intenta acceder al motor? En su propio contexto? – MystikSpiral

Respuesta

1

Sé que esta es una vieja pregunta, pero sí ejecuto BIRT a través del puente PHP de Java con éxito. El código PHP que tienes es correcto. Pero la forma en que está utilizando los archivos WAR no lo es.

Básicamente tienes un archivo war con los archivos PHP/JavaBridge y BIRT + una clase especial para cargar BIRT dentro del puente JAVA.

Si aún no ha resuelto este problema, es posible que pueda hacer disponible el archivo WAR que estoy usando.

+0

hola sabes cómo implementar birt con la ayuda de zend javabridge –

Cuestiones relacionadas