Report vom Server erstellen

Alex02

Mitglied
Hallo,

ich hab da ein kleines (großes)Problem.

Mal einen kurzen Einstieg:
Ich habe folgenden JavaCode:

package exportPaket;



import java.io.*;

import java.sql.*;
import java.util.*;



import net.sf.jasperreports.engine.*;

import net.sf.jasperreports.engine.design.JasperDesign;

import net.sf.jasperreports.engine.xml.JRXmlLoader;

import net.sf.jasperreports.view.JasperViewer;



public class Report {


public static void main (String [] args) throws FileNotFoundException
{
System.out.println ("Hallo";
berichte();
System.out.println("main durch";
}

public static void berichte () throws FileNotFoundException {


Map inhalt = new HashMap ();
Connection con;


try {
Class.forName("net.sourceforge.jtds.jdbc.Driver";
} catch (ClassNotFoundException e) {
System.out.println(e);
}//endtry

try
{

con = DriverManager
.getConnection("jdbc:jtds:sqlserver://10.17.2.12/ixportal_new;instance=proj;","**","*******";




//----------------------------------------------------------------------------------------------
System.out.println("Verbunden";

JasperReport jRep;
JasperPrint jasperPrint;


try
{

InputStream input = new FileInputStream (new File("C:/Dokumente und Einstellungen/All Users/Desktop/Telefonverzeichnis.jrxml");
JasperDesign design = JRXmlLoader.load(input);
jRep = JasperCompileManager.compileReport(design);
jasperPrint = JasperFillManager.fillReport(jRep,inhalt, con);



JasperViewer jasperViewer = new JasperViewer (jasperPrint, true);
jasperViewer.show ();

System.out.println("Report erstellt";
//---------------------------------------------------------------------------------------------------

}//endtry Jasperreport

catch (JRException e)
{
System.out.println(e);
//e.printStackTrace();
//System.out.println("----------------------------------------------------";
//System.out.println(e.getCause());
//System.out.println(e.getClass());
}//endcatch jasperreport

}//endtry


catch (SQLException e)
{
System.out.println("SQL-Fehler: " + e);
}//endcatch


}

}

Diese java.class-Datei hab ich erfolgreich in auf dem Server importiert.
Sie wird auf von Intrexx gefunden.

rufe ich jetzt die Methode .....berichte() auf, bekomme ich folgende Fehlermeldung:



Diese Seite wird Ihnen angezeigt, da auf dem Server ein Fehler aufgetreten ist.
Fehler beim Rendering. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'berichte' in class exportPaket.Report threw exception class java.awt.HeadlessException : null


Fehlerinformationen als Textdatei speichern...
Bitte wenden Sie sich mit den nachfolgenden Informationen an den Support.

Fehlerinformationen anzeigen...


ErrorCode: 4612530443357519875
ErrorMessage: Fehler beim Rendering. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'berichte' in class exportPaket.Report threw exception class java.awt.HeadlessException : null
SERVER_PORT 80
DEFAULT_URL /portal_new/default.asp
HTTP_USER_AGENT Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
rq_Template internal/layout/vm/html/frames/appmain.vm
rq_Lang de
rc_CurrentParentId -1
rq_SId F52B317B1629E15D9206CA818497915074FF79E2
rq_RecId -1
SERVER_NAME 10.17.99.97
HTTP_ACCEPT image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
URL_QUERY_STRING /portal_new/default.asp?rq_TargetId=31303032&rq_AppId=31313933&rq_RecId=2D31&rq_SourceAppId=31313933&rq_ClientType=68746D6C&rq_Template=696E7465726E616C2F6C61796F75742F766D2F68746D6C2F6672616D65732F6170706D61696E2E766D&rq_Lang=6465&rq_SourceId=31303032&rq_SId=46353242333137423136323945313544393230364341383138343937393135303734464637394532
rq_ClientType html
CONTENT_TYPE
rc_CurrentRecId -1
loginNameUTF8 626C616E726531
SERVER_PROTOCOL HTTP/1.0
rc_CurrentRecords {1012=}
SCHEME http
rq_AppId 1193
rq_SourceAppId 1193
DOWNLOAD_URL /portal_new/default.asp
REQUEST_URI /portal_new/default.asp
co_SId F52B317B1629E15D9206CA818497915074FF79E2
HTTP_ACCEPT_ENCODING
QUERY_STRING rq_TargetId=31303032&rq_AppId=31313933&rq_RecId=2D31&rq_SourceAppId=31313933&rq_ClientType=68746D6C&rq_Template=696E7465726E616C2F6C61796F75742F766D2F68746D6C2F6672616D65732F6170706D61696E2E766D&rq_Lang=6465&rq_SourceId=31303032&rq_SId=46353242333137423136323945313544393230364341383138343937393135303734464637394532
SYS_APP_1193 --- App information: --- guid: 3AE77B2ECEBF2CBECC583C0ADE23E99E4D74F76B id: 1193 template: 30 startfup: 1000 type: 1 --- FUP information: --- guid: FD98404C111C37588D0B13A64DC0A54DB8804A9D id: 1002 lang: de / item: Eingabeseite lang: en / item: Input Page --- FUP information: --- guid: FF8C8F7A264ECB251D0A9C39979D0C62109C573D id: 1000 lang: de / item: Hauptseite lang: en / item: Main Page --- FUP information: --- guid: E883A41FB2C48136479D638BC26D25C8FB3444C7 id: 1001 lang: de / item: Suche lang: en / item: Search
rq_TargetId 1002
loginDomain 6A76686C2E636F6D
HTTP_COOKIE loginNameUTF8=626C616E726531; loginDomain=6A76686C2E636F6D; ASPSESSIONIDASQQRTTR=POHNNPMBACFKLFFADPPGEGDN
rq_SourceId 1002
Stack Trace de.uplanet.error.ExceptionBase: Fehler beim Rendering.
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'berichte' in class exportPaket.Report threw exception class java.awt.HeadlessException : null
at de.uplanet.lucy.server.composer.Composer.c(Unknown Source)
at de.uplanet.lucy.server.composer.Composer.a(Unknown Source)
at de.uplanet.lucy.server.composer.Composer.processRequest(Unknown Source)
at de.uplanet.lucy.server.connector.ServerBridgeRequest.internalProcessRequest(Unknown Source)
at de.uplanet.lucy.server.connector.AbstractServerBridgeRequest$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:437)
at de.uplanet.lucy.server.connector.AbstractServerBridgeRequest.processRequest(Unknown Source)
at de.uplanet.lucy.server.connector.RequestWorkerBase.processElement(Unknown Source)
at de.uplanet.util.QueueWorker.run(Unknown Source)
at de.uplanet.lucy.server.connector.RequestWorker.run(Unknown Source)
at java.lang.Thread.run(Thread.java:534)
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'berichte' in class exportPaket.Report threw exception class java.awt.HeadlessException : null
at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:246)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:175)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:220)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
at org.apache.velocity.runtime.directive.Parse.render(Parse.java:181)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:114)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230)
at org.apache.velocity.Template.merge(Template.java:256)
... 12 more

Könnte es möglicherweise an der Pfadangabe ("C:/Dokumente und Einstellungen/All Users/Desktop/Telefonverzeichnis.jrxml"liegen. Mit diesem Pfad versuche ich als Client die Datei auf dem Server anzusprechen.

Jemand eine Ahnung warum diese Fehlermeldung kommt?

:confused: :confused: :confused:

Gruß

Alex
 
Ok,

bin ein Schritt weiter.

Das Problem liegt an:

JasperViewer jasperViewer = new JasperViewer (jasperPrint, true);
jasperViewer.show ();

Jetzt stellt sich die Frage, ob JasperViewer zu iReport oder zu JasperReport gehört!?

Wiess jemand was näheres
 
Hallo!

Setzt doch mal zum Spaß
-Djava.awt.headless=true

als zusätzliches JVM Argument deines Servlet Containers.
(Bei Tomcat bin/startup.sh -> JAVA_OPTS=-Djava.awt.headless=true)
Gruß Tom
 
Hallo!

Dein Servlet Container läuft in einer sogenannten Headless Umgebung. Deine Jasper Reporting Engine verwendet intern wahrscheinlich Java AWT Images um Teile des Reports zu rendern. Diese Images können aber nicht so ohne weiteres in einer Headless Umgebung erzeugt werden. Dafür muss man der zugrundeliegenden JVM eben mitteilen, dass sie in einer Headlessumgebung abläuft. Das macht man dann über ein System-Property, welches man beispielsweise setzten kann, indem man dem Java Launcher mit -DSystemPropertyName=SystemPropertyValue den entsprechenden Parameter mitgibt. In unserem Fall ist das dann: -Djava.awt.headless=true

Gruß Tom
 
hmm,

hab grad schaut und nicht gefunden, wie ich der virtuellen Maschine irgendwelche Parameter übergeben kann.

Wäre eine Anleitung für Dummys möglich?

Gruß
 
Hallo!

Eine Möglichkeit wäre beispielsweise folgendes:
Öffne die Datei %TOMCAT_HOME%/bin/catalina.sh mit einem Texteditor und
schreib direkt unter die Zeile # -----------------------------------------------------------------------------
folgenden Eintrag:
JAVA_OPTS=-Djava.awt.headless=true

Abspeichern, Tomcat neu starten und dann sollte es gehen.

Gruß Tom
 
Hallo Thomas,

danke für Deine Unterstützung, ich hab da jedoch noch eine kleine Schwierigkeit und zwei Fragen:

1. Diese "catalina.sh" - Datei local oder Server (ich finde in beiden Fällen mehrere Dateien)

Wenn ich diesen Codeabschnitt einsetze, soll ich irgendwelche Trennzeichen setzen? (#)

Das Problem besteht mit dem Abspeichern, wenn ich in diese Datei etwas einfüge und es speichern will, bekomm ich folgende Meldung:

"Die Datei.......... für xtreme250.zip\tomcat\bin\catalina.sh kann nicht erstellt werden.

Stellen Sie sicher, dass Pfad- und Dateiname richtig sind"

Hast Du eine Lösung parat

Gruß

Alex
 
Hallo,

ich hab jetzt meinen Code um folgendes ergänzt:

InputStream input = new FileInputStream (new File("//intedis2/portal_new$/internal/files/Telefonverzeichnis.jrxml"));
JasperDesign design = JRXmlLoader.load(input);
jRep = JasperCompileManager.compileReport(design);

System.setProperty("java.awt.headless", "true");

aber irgendwie bekomme ich, anstatt einer Ausführung, trotzdem Folgendes:

Diese Seite wird Ihnen angezeigt, da auf dem Server ein Fehler aufgetreten ist.
Fehler beim Rendering. Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'berichte' in class exportPaket.Report threw exception class java.awt.HeadlessException : null


Fehlerinformationen als Textdatei speichern...
Bitte wenden Sie sich mit den nachfolgenden Informationen an den Support.

Fehlerinformationen anzeigen...

:( :confused:
 
Zurück