# Oracle Report generieren



## PLSQL-Entwickler (15. Jul 2008)

Hallo,

ich möchte einen Report aus JSP generieren. 
Ich hatte bis jetzt immer mit PLSQL-ServerPages gemacht, nun möchte ich das gleiche auch mit JSP versuchen. 
Mit PLSQL geht es so:


```
...
    v_url   varchar2(1000);
    v_daten varchar2(4000);
    v_req   utl_http.req;
    v_resp  utl_http.resp;
...
  begin
    v_url   := 'report-server/rwservlet?destype=file&desformat=PDF&server=repserv&report=report.rep&desname=ausgabedatei.pdf';
    v_req   := utl_http.begin_request(v_url);
    v_resp  := utl_http.get_response(v_req);
    utl_http.read_text(v_resp, v_daten);
    utl_http.end_response(v_resp);
  end;
```

Das Package UTL_HTTP macht es möglich. Die Daten von einer URL-Adresse werden abgerufen und in die Variable v_daten geschrieben. Das Ergebnis konnte auch eine 404-Seite (Fehler) sein. Das ist mir aber egal, weil die URL-Adresse den Reportserver aufruft. Und wenn es erfolgreich war, habe ich am Ende meine ausgabe.pdf in entspr. Verzeichnis. Eigentlich ist die Funktion utl_http.get_response dafür da, um die Existent der URL zu überprüfen, dennoch wird die URL ausgeführt, was für mich wichtig ist.

Um URL-Existenz in JAVA zu bestimmen habe ich folgendes gefunden :### :


```
static boolean URLexists(java.lang.String URL)
	{
		java.net.URL url;
		try
		{
			url = new URL(URL);
		} catch (MalformedURLException e)
		{
			return false;
		}
		try
		{
			url.openStream().close();
			return true;
		} catch (IOException e)
		{
			return false;
		}
	}
```

Es funktioniert mit normalen URL-Adressen, wird aber in meinem Fall kein Report generiert.
Folgende Funktion macht es auch nicht:


```
static boolean URL_exists(String URLName)
	{
		try
		{
			HttpURLConnection.setFollowRedirects(false);
			HttpURLConnection con = 
						(HttpURLConnection)new URL(URLName).openConnection();
			con.setRequestMethod("GET");
			con.connect();
			return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
		} catch (Exception e)
		{
			e.printStackTrace();
			return false;
		}
	}
```

Es muss doch möglich sein ???:L . Hat jemand eine Idee?


----------



## maki (15. Jul 2008)

```
report-server/rwservlet?destype=file&desformat=PDF&server=repserv&report=report.rep&desname=ausgabedatei.pdf
```
Das ist doch keine URL.

Das ist eine:

```
http://report-server/rwservlet?destype=file&desformat=PDF&server=repserv&report=report.rep&desname=ausgabedatei.pdf
```


----------



## PLSQL-Entwickler (15. Jul 2008)

Das ist schon richtig. Ich habe nur abgekürzt, um hier nicht zu lange Texte zu haben. Der Aufruf ist schon richtig so:
"http://report-server...".

Aber Problem liegt nicht in der URL selber :noe:, weil ich diese genauestens geprüft und getestet habe.


----------



## maki (15. Jul 2008)

Nun gut, 

deine URL setzt voraus, dass da ein HTTP Server lauscht, tut er das denn?


----------



## PLSQL-Entwickler (15. Jul 2008)

Ich gehe davon aus. Ich habe es so getestet: 
im Oracle JDeveloper eine JSP-Seite gestartet (JDeveloper startet Server lokal). JSP läuft im IE-Browser. 
In JSP wird URL geprüft mit obengenannten Methoden - keine PDF-Datei :bahnhof:. 
In selbem Browser URL eingefügt - PDF-Datei erstellt  :!:!


----------



## PLSQL-Entwickler (15. Jul 2008)

Ich habe inzwischen eine weitere Möglichkeit gefunden:


```
static boolean URL_exists_3(String myURL)
	{
	   try
	   {
	     URL url = new URL(myURL);
	     Reader is = new InputStreamReader( url.openStream() );
 	     return true;
	   }
	   catch ( MalformedURLException e ) {
	     System.out.println( "MalformedURLException: " + e );
		  return false;
	   }
	   catch ( IOException e ) {
	     System.out.println( "IOException: " + e );
		  return false;
	   }
   }
```

Dabei ist mir aufgefallen, dass es doch ein Unterschied gibt: Lokale URLs kann ich lesen:
"http://pc-user:8988/JSFIntro-view-context-root/faces/welcome.jsp"
Dagegen die URL aus dem Netz (kein Internet) nicht:
"http://int.server.de/webdev/start.htm"
Dabei meldet die Methode Fehler 407 (Wahrscheinlich: 407 Proxy Authentication Required). 
Wird die selbe URL im Browser eingegeben - kein Fehler! 

 :cry:


----------



## PLSQL-Entwickler (15. Jul 2008)

ich habe es gefunden!
Ich habe für JDevelopr unter "Web Browser and Proxy" die Proxy-Einstellungen gemacht, damit er sich die Hilfe, Infos, Update usw. aus dem Inet holt. Ich habe die Proxy abgeschaltet und es funktioniert  :toll:! 
Danke für Eure Hilfe!


----------

