php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.01.2009, 15:48  
Neuer Benutzer
 
Registriert seit: 09.01.2009
Beiträge: 3
alphas befindet sich auf einem aufstrebenden Ast
Standard PHP/Java Bridge - Fehler in PHP aus Java

Hallo,

ich verwende die aktuelle PHP/JavaBridge (php-java-bridge.sourceforge.net), dazu PHP 5.2.5. Ich habe keinen Tomcat-Server oder ähnliches im Hintergrund laufen, einzig Apache.

Dazu verwende ich das ReportingTool BIRT von eclipse (Eclipse BIRT Home), dass es nur in Java gibt. Dazu läuft die aktuelle Birt-Runtime in der Version 2.3.1.

Deshalb habe ich die Bridge aufgesetzt um mittels den Report/Design und Chart-Apis jeweils direkt Reports zu generieren.
Die Report-Engine-API und die Design-Engine-API laufen soweit problemlos, bzw. soviel wie ich aktuell davon brauche. Jetzt will ich auch direkt Charts erstellen, dazu die Chart-API. Eclipse bietet dazu Beispiele an, die laufen unter Java problemlos. Jetzt habe ich den Java-Code in PHP übertragen und nun kommt ein nettes Fehlerchen. Und hier hänge ich jetzt rum.

Das ist der Original-Java-Codeausschnitt (gekürzt auf die notwendige Stelle):
Code:
import org.eclipse.birt.chart.factory.IGenerator;
import org.eclipse.birt.chart.api.ChartEngine;
...
//Returns a singleton instance of the Chart Engine
ChartEngine ce = ChartEngine.instance(pf);
//Returns a singleton instance of the Generator
IGenerator gr = ce.getGenerator();
In PHP sieht das nun so aus:
PHP-Code:
new Java("org.eclipse.birt.chart.factory.IGenerator");  
...
//Returns a singleton instance of the Chart Engine
$ce = new Java("org.eclipse.birt.chart.api.ChartEngine");    
$ce->instance($platform);        
$gr $ce->getGenerator(); 
Leider kommt aber folgende Meldung raus:
Zitat:
Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[c:ChartEngine]]->getGenerator. Cause: java.lang.NoSuchMethodException: getGenerator(). Candidates: [] VM: 1.6.0_11@http://java.sun.com/" at: #-5 php.java.bridge.JavaBridge.Invoke(JavaBridge.java: 1043) #-4 php.java.bridge.Request.handleRequest(Request.java :409) #-3 php.java.bridge.Request.handleRequests(Request.jav a:485) #0 http://localhost:8080/JavaBridge/java/Java.inc(265): java_ThrowExceptionProxyFactory->getProxy(54, 'org.eclipse.bir...', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(417): java_Arg->getResult(true) #2 http://localhost:8080/JavaBridge/java/Java.inc(423): java_Client->getWrappedResult(true) #3 http://localhost:8080/JavaBridge/java/Java.inc(627): java_Client->getResult() #4 http://localhost:8080/JavaBridge/java/Java.inc(1753): java_Client->invokeMethod(52, 'getGenerator', Array) #5 http://localhost:8080/JavaBridge/java/Java.inc(1866): java_JavaProxy->__call('getGenerator', Array) #6 http://localhost:8080/JavaBridge/java/ in http://localhost:8080/JavaBridge/java/Java.inc on line 228
Der sagt mir dass es die Methode "getGenerator()" nicht gibt. Jedoch steht die in der ChartEngine mit drin. Hier die Doku. ChartEngine (BIRT Chart Engine API).

Ich nehme an das liegt vielleicht an der Typdeklaration in Java, ... aber eigentlich keine richtige Ahnung, oder ich bin einfach zu blind. Hat damit vielleicht der ein oder andere Erfahrungen?
Ich habe schon ziemlich viel Zeit deswegen verschwendet und auch gesucht, aber selbst im FAQ-Teil bei der JavaBridge steht dazu nichts.

Wer nähere Infos braucht bitte kurz Bescheid sagen.
alphas ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.01.2009, 17:03  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

doppelpost ?
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 09.01.2009, 17:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich laß das mal stehen, da es sich um ein komplexes Problem handelt.
Trotzdem @ alphas:

Bitte beachten: Anmerkungen zu Crosspostings

Bitte setze im anderen Forum einen Link hierher, damit nicht zwei Usergemeinschaften doppelte Arbeit machen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 10.01.2009, 04:53  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

rein logisch würd ichs so machen:

PHP-Code:
// without saving an object its gonna be destructed immidiatly
$package1=new Java("org.eclipse.birt.chart.factory.IGenerator");   
... 
//Returns a singleton instance of the Chart Engine 
// without saving an object its gonna be destructed immidiatly
$package2 = new Java("org.eclipse.birt.chart.api.ChartEngine");  

// get instance   
$ce=$package2->instance($platform);

// call method        
$gr $ce->getGenerator(); 
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 13.01.2009, 15:50  
Neuer Benutzer
 
Registriert seit: 09.01.2009
Beiträge: 3
alphas befindet sich auf einem aufstrebenden Ast
Standard

danke, funktioniert nun auch bis zum nächstem fehler...
alphas ist offline   Mit Zitat antworten
Alt 13.01.2009, 17:08  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von alphas Beitrag anzeigen
danke, funktioniert nun auch bis zum nächstem fehler...
falls du das jemals liest:

es würde mich interessieren, wies weitergeht
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 14.01.2009, 14:32  
Neuer Benutzer
 
Registriert seit: 09.01.2009
Beiträge: 3
alphas befindet sich auf einem aufstrebenden Ast
Standard

hallo,

und mit weiteren Fehlern geht es vorwärts:

Nr 1:
Zitat:
Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[o:Generator]]->build((i:IDisplayServer)[o:SwingDisplayServer], (i:Chart)[o:ChartWithAxesImpl], (i:Bounds)[o:BoundsImpl], (i:IExternalContext)null, (o:RunTimeContext)null, (i:IStyleProcessor)null). Cause: org.eclipse.birt.chart.exception.ChartException: Unable to process dataset content specified as {0=14.4, 1=7.2, 2=20.1} for dataset org.eclipse.birt.chart.model.data.impl.NumberDataS etImpl@98d303 (values: {0=14.4, 1=7.2, 2=20.1}) VM: 1.6.0_11@http://java.sun.com/" at: #-10 org.eclipse.birt.chart.factory.Generator.build(Gen erator.java:1024) #-9 sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method) #-8 sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source) #0 http://localhost:8080/JavaBridge/java/Java.inc(265): java_ThrowExceptionProxyFactory->getProxy(121, '@V', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(417): java_Arg->getResult(true) #2 http://localhost:8080/JavaBridge/java/Java.inc(423): java_Client->getWrappedResult(true in http://localhost:8080/JavaBridge/java/Java.inc on line 228
ausgehend aus folgenden Zeilen:
PHP-Code:
// NumberDataSet 
$numberDataSetImpl = new Java("org.eclipse.birt.chart.model.data.impl.NumberDataSetImpl");  
$orthoValues $numberDataSetImpl->create( array ( 14.47.220.1 ));
....
// Y-Series
$barSeriesImpl = new Java("org.eclipse.birt.chart.model.type.impl.BarSeriesImpl");  
$bs $barSeriesImpl->create();
$bs->setDataSet($orthoValues);
$bs->getLabel()->setVisibletrue );
$position = new Java("org.eclipse.birt.chart.model.attribute.Position"); 
Der Originalcode in Java lautet:
Code:
		
// Data Set
TextDataSet categoryValues = TextDataSetImpl.create( new String[]{
	"Item 1", "Item 2", "Item 3"} );
NumberDataSet orthoValues = NumberDataSetImpl.create( new double[]{
	14.4, 7.2, 20.1
} );
...
// Y-Series
BarSeries bs = (BarSeries) BarSeriesImpl.create( );
bs.setDataSet( orthoValues );
bs.getLabel( ).setVisible( true );
bs.setLabelPosition( Position.INSIDE_LITERAL );
SeriesDefinition sdY = SeriesDefinitionImpl.create( );
Bei Interesse, es handelt sich hierbei um Auszüge aus den Examples von Birt zur ChartEngineAPI (http://www.birt-exchange.com/devshar...binar-examples).

In Eclipse läuft das ganze wunderbar durch, der Chart wird erfolgreich erstellt. Auch die Werte des DataSets sind gleich, in PHP und Java jeweils (0=14.4, 1=7.2, 2=20.1) (aus dem debugger). irgendwie unverständlich. Vielleicht ist irgendwie das Format falsch?

Nr 2:
Bisher lief alles lokal. Nun hab ich die JavaBridge und die ReportEngine auf den Server geladen und ein kleines Demosystem zum Javatest gestartet. Lief perfekt, Java läuft also auch dem Server mit der Brigde.
Nun wollte ich einfach mal einen Testreport in eine HTML-Seite umwandeln, und es kommt ein sehr merkwürdiger Fehler, der nur auf dem Server kommt, lokal aber nicht. Aufgrund dessen dass der Fehler erst relativ spät ausgegeben wird, scheint das Script auch mit Java und in Teilen mit der Bridge zusammen zu arbeiten.

Zitat:
Fatal error: Uncaught [[o:Exception]:"java.lang.Exception: Invoke failed: [[o:Request$PhpNull]]->createReportEngine([o:EngineConfig]). Cause: java.lang.NullPointerException: call object is null, check the server log file(s). VM: 1.6.0_11@http://java.sun.com/" at: #-5 php.java.bridge.JavaBridge.Invoke(JavaBridge.java: 101 #-4 php.java.bridge.Request.handleRequest(Request.java :409) #-3 php.java.bridge.Request.handleRequests(Request.jav a:485) #0 http://localhost:8080/JavaBridge/java/Java.inc(265): java_ThrowExceptionProxyFactory->getProxy(10, 'php.java.bridge...', true) #1 http://localhost:8080/JavaBridge/java/Java.inc(417): java_Arg->getResult(true) #2 http://localhost:8080/JavaBridge/java/Java.inc(423): java_Client->getWrappedResult(true) #3 http://localhost:8080/JavaBridge/java/Java.inc(627): java_Client->getResult() #4 http://localhost:8080/JavaBridge/java/Java.inc(1753): java_Client->invokeMethod(9, 'createReportEng...', Array) #5 http://localhost:8080/JavaBridge/java/Java.inc(1866): java_JavaProxy->__call('createRepor in http://localhost:8080/JavaBridge/java/Java.inc on line 228
Das Script sieht folgendermaßen aus (es ist im übrigen ein Windowsserver), die Pfade sind auch korrekt:
PHP-Code:
...
$engineConfig = new Java("org.eclipse.birt.report.engine.api.EngineConfig");
$engineConfig->setEngineHome($engineHome);
$platform = new Java("org.eclipse.birt.core.framework.Platform");
$platform->startup($engineConfig); 
$renderOptionBase = new Java("org.eclipse.birt.report.engine.api.HTMLRenderOption");   
$renderOptionBase->setOutputFormat("html");  
$renderContext = new Java("org.eclipse.birt.report.engine.api.HTMLRenderContext");    
$renderContext->setBaseUrl($reportFolderPath); 
$reportPath "...";
$aOutputFileName "...";
$renderOptionBase->setOutputFileName($aOutputFileName);    
$myContext = array();
$engineConstants = new Java("org.eclipse.birt.report.engine.api.EngineConstants");
$myContext["".$engineConstants->APPCONTEXT_HTML_RENDER_CONTEXT] = $renderContext;
$contextMap $myContext;
$reportEngineFactoryObj = new Java("org.eclipse.birt.report.engine.api.IReportEngineFactory");
$reportEngineFactory $platform->createFactoryObject($reportEngineFactoryObj->EXTENSION_REPORT_ENGINE_FACTORY);
$reportEngine $reportEngineFactory->createReportEngine($engineConfig);   
$reportDesign $reportEngine->openReportDesign($reportPath);   
... 
und immer bei
PHP-Code:
$reportEngineFactory->createReportEngine($engineConfig); 
schmeisst er den Fehler. Wobei in $engineConfig auch etwas enthalten.

Komisch ist einfach, dass ich die benötigten Ordner 1-zu-1 kopiert habe. Auch die Datei ist 1-zu-1 kopiert, ausgenommen natürlich die jeweiligen Pfade zu den Reports.
alphas ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler: Unexcepted { Stephan_87 PHP Tipps 2008 6 13.12.2008 21:04
bitte hilfe! mysql fehler meldung: basicx PHP Tipps 2008 2 22.07.2008 16:36
mysql fehler meldung: basicx Datenbanken 1 22.07.2008 09:48
[Erledigt] Mysql Syntax Fehler Datenbanken 3 06.07.2006 09:58
php oder java? resturan Off-Topic Diskussionen 1 24.04.2006 09:45
Aufruf eines PHP Skriptes aus JAVA Umgebung PHP Tipps 2005-2 3 14.06.2005 17:39
Blöder MySQL Fehler PHP Tipps 2005 3 15.05.2005 03:14
Fehlermeldung - aber kein fehler... Tschuu HTML, Usability und Barrierefreiheit 16 14.03.2005 15:56
[Erledigt] mysql fehler PHP Tipps 2004 2 03.11.2004 00:32
get_browser und Java MadCro PHP-Fortgeschrittene 1 18.10.2004 14:43
Hilfe ich finde den Fehler nicht! PHP Tipps 2004 2 07.10.2004 17:40
[Erledigt] Java Fehler bei popup HTML, Usability und Barrierefreiheit 1 15.09.2004 02:36
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
Java oder C Off-Topic Diskussionen 15 17.08.2004 17:55
mysql_real_escape_string - Fehler Schaelle Datenbanken 0 03.07.2004 23:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum