Apache Jetspeed 1.5 - Datenbank Portlet

Status
Nicht offen für weitere Antworten.

hitman_fh

Mitglied
Hallo zusammen!

Ich versuche gerade ein Portlet zu schreiben, welches in unserem Intranet laufen soll. Und zwar geht es darum, dass sich ein Mitarbeiter zum Essen in der Kantine anmelden kann.
Ich habe mir das Buch Portale und Webapplikationen mit Apache Frameworks von Fabian Theis und Kollegen besorgt, da ich bisher noch nie mit Jetspeed gearbeitet habe.
Zum Vorgehen:
1.) als erstes soll man ein Datenbank-Schema bauen, welches dann von Torque verarbeitet werden kann. Das habe ich dann auch getan, und es sieht, wie folgt aus:
Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
<!DOCTYPE database SYSTEM "H:\Speisenplan\database.dtd">
<database>
	<table name="Speisenplan" idMethod="idbroker">
		
		<column name="AW_SpPlan" primaryKey="true" required="true" autoIncrement="true" type="INTEGER" />
		
		<column name="KW" required="true" type="INTEGER" />
		
		<column name="TAG" required="true" type="VARCHAR" size="25" />
		
		<column name="DATUM" required="true" type="DATE" />
		
		<column name="ID_GERICHT1" required="true" type="INTEGER" />
		
		<column name="ID_GERICHT2" required="true" type="INTEGER" />
		
		<foreign-key foreignTable="GERICHTE">
			<reference local="ID_GERICHT1" foreign="ID_GERICHT" />
		</foreign-key>
		
		<foreign-key foreignTable="GERICHTE">
			<reference local="ID_GERICHT2" foreign="ID_GERICHT" />
		</foreign-key>
		
	</table>
	
	<table name="GERICHTE" idMethod="idbroker" >
		
		<column name="ID_GERICHT" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
		
		<column name="BESCHREIBUNG" size="255" type="VARCHAR" />
		
		
		<column name="BISTRO" type="INTEGER" required="true" default="0" />
		
		<column name="AKTIV" type="INTEGER" required="true" default="1" />
	
	</table>
</database>

Nun habe ich
Code:
maven dist:install
aufgerufen, und dann habe ich auch gesehen, dass er zwei Klassen angelegt hat. Aber leider wurden keine SQL-Skripts erstellt, mit denen man die Tabellen in die Datenbank importieren kann.
Hat jemand eine Ahnung, wie die nächsten Schritte aussehen müssten?? Denn in dem Buch geht es um die Version 1.4 von Jetspeed und da ist dann die Rede von verschieden Verzeichnissen, die es anscheinend in Version 1.5 nicht mehr gibt. Ich bin über jede Idee dankbar!!!!!
Vielen Dank im voraus!
Mfg

hitman_fh
 

DP

Top Contributor
hi.

eine antwort auf deine pm kommt später ;)

also die beispiel-applikation aus dem buch kannste imho knicken. habe auch versucht damit anzufangen, habe es dann aber weggelegt - taugt später mehr als nachschlagewerk.

hast du das jetspeed schon ans laufen bekommen? also so dass die beispiel-applikationen laufen (ohne deine oracle-anbindung jetzt).

wenn das stabil läuft, kannste dich an die auslagerung in deine ora-db kümmern.

ich würde vorschlagen, dich mit den manuals von bluesun auseinanderzusetzen, die sind praxisbezogen und funktionieren wunderbar.

in jetspeed reinzukommen war ein sehr steiniger weg, aber im nachhinein bin ich den entwicklern für diese portlet-engine sehr dankbar :)
 

hitman_fh

Mitglied
Also ich habe nun versucht ein Velocity-Portlet für meinen Datenbankzugriff zu bauen.
Als erstes habe ich eine Java-Klasse, die dafür sorgen soll die Daten für das Template bereit zu stellen.
Meine Java-Klasse sieht, wie folgt aus (SpeiseplanAction.java):
Code:
package org.apache.jetspeed.modules.actions.portlets;

//Java stuff
import java.sql.*;
import org.apache.jetspeed.portal.portlets.VelocityPortlet;

//Turbine stuff
import org.apache.turbine.util.Log;
import org.apache.turbine.util.RunData;
import org.apache.turbine.services.TurbineServices;

//Velocity Stuff
import org.apache.velocity.context.Context;

//Jetspeed stuff
import org.apache.jetspeed.portal.portlets.VelocityPortlet;
import org.apache.jetspeed.modules.actions.portlets.VelocityPortletAction;
import org.apache.jetspeed.webservices.finance.stockmarket.StockQuoteService;
import org.apache.jetspeed.webservices.finance.stockmarket.StockQuote;
import org.apache.jetspeed.util.PortletConfigState;
import org.apache.jetspeed.util.StringUtils;

public class SpeisenplanAction extends VelocityPortletAction {
	private static final String dbdriver = "oracle.jdbc.driver.OracleDriver";
	private static final String dburl    = "jdbc:oracle:thin:@oracle:1521:webdb";
	private static final String user     = "jetspeed";
	private static final String passwd   = "jetspeed";
	private static Statement statement;
	private static Connection connection;
	
	protected void buildNormalContext (VelocityPortlet portlet, Context context, RunData rundata) {
		 
		try {
			// testet, ob Treiber vorhanden ????
			Class.forName(dbdriver);			
			// Connection aufbauen
			connection = DriverManager.getConnection(dburl, user, passwd);
			// SQL-Statement initialisieren
	      	statement = connection.createStatement();
	      	// Variable mit SQL-Statement
	      	String SQLQuery = "SELECT T_S.TAG,T_M1.BESCHREIBUNG AS GERICHT1,T_M2.BESCHREIBUNG AS GERICHT2 FROM " +
							  "wallm.T_MAHLZEITEN T_M1,wallm.T_SPEISEPLAN T_S, wallm.T_MAHLZEITEN T_M2 WHERE " +
							  "( T_S.ID_GERICHT1=T_M1.ID_MZ ) AND ( T_S.ID_GERICHT2=T_M2.ID_MZ );";
	      	// Result-Variable initialisieren
	    	ResultSet rs = null;
	    	// Statement ausführen
	        rs = statement.executeQuery(SQLQuery);
	        
	        String[][] gerichte = null;
	        int i=0;
	        while (rs.next()) {
	       		gerichte[0][i] = rs.getString(2);
	       		gerichte[1][i] = rs.getString(3);
	       		i++;
	    	}
		
		if (i==0) {
	        	gerichte[0][0]="Keine Daten";
	      }

	        // Ergebnis in den Kontext schieben
	        context.put("Gerichte",gerichte);
		  context.put("test","Hallo ich test");
	        // Statement schliessen
	        statement.close();
	        // Verbindung schliessen
	        connection.close();

		}
		catch (Exception e) {
			
		}
	}
}

Mein Template sieht folgendermaßen aus (speiseplan.vm):
Code:
<table border="0" width="100%" cellspacing="0" cellpadding="0" bgcolor="">
	  <tr> 
	  	<td class="headline1" align="center">Jungfernstieg</td>
	  </tr>
	  <tr> 
	  	<td class="leerzeile">&</td>
	  </tr>   
	  <tr> 
	  	<td class="headline2" align="center">Speisenplan</td>
	  </tr>
	  <tr> 
	  	<td class="leerzeile">&</td>
	  </tr> 
	  <tr> 
	  	<td class="headline3" align="center">Vom 13.12.2004 bis zum 17.12.2004</td>
	  </tr>
	  <tr> 
	  	<td class="leerzeile">&</td>
	  </tr> 
</table>
<table border="1" width="100%" cellspacing="0" cellpadding="0" bgcolor="">
	  <tr>
	    <th colspan="2" align="" valign="" width="20%" bgcolor="#BDBEBD">Montag</th>
	    <th colspan="2" align="" valign="" width="20%" bgcolor="#BDBEBD">Dienstag</th>
	    <th colspan="2" align="" valign="" width="20%" bgcolor="#BDBEBD">Mittwoch</th>
	    <th colspan="2" align="" valign="" width="20%" bgcolor="#BDBEBD">Donnerstag</th>
	    <th colspan="2" align="" valign="" width="20%" bgcolor="#BDBEBD">Freitag</th>
	  </tr>
	  <tr>
		<td>$Gerichte[0][0]</td>
		<td>$test</td>
	  </tr>
        #foreach ($gericht in $gerichte)
        <tr>
          #entryCell ($gericht[0])
          #entryCell ($gericht[1]) 
          #entryCell ($gericht[2]) 
          #entryCell ($gericht[3])
          #entryCell ($gericht[4]) 
        </tr>
        #end
</table>
Aber wenn ich dieses Portlet unter Jetspeed einbinde, dann sehe ich nur die Kopfzeile und $Gerichte[0][0] und $test als Worte. Sie werden also nicht als Referenzen erkannt.
Wieso nicht? Was ist an meiner java-Datei falsch. Habe ich etwas vergessen oder übersehen??
Es wäre super klasse, wenn mir jemand weiterhelfen könnte. Ich weiß auch, dass der Zugriff, denn ich in der Java-Datei mache (über jdbc) nicht das Non-Plus-Ultra ist. Wenn ihr wisst, wie ich das direkt über Torque machen kann, würde mich das auch schon weiterbringen.
Übringes habe ich natürlich die local-portlets.xreg angepasst. Die sieht, wie folgt aus:
Code:
<portlet-entry name="Speisenplan" hidden="false" type="ref" parent="CustomizerVelocity" application="false">
        <meta-info>
            <title>Speiseplan</title>
            <description>Speiseplan</description>
        </meta-info>
        <parameter name="template" value="speiseplan" hidden="true" cachedOnName="true" cachedOnValue="true"/>
        <parameter name="action" value="portlets.SpeisenplanAction" hidden="true" cachedOnName="true" cachedOnValue="true"/>
	  <media-type ref="html"/>
        <url cachedOnURL="true"/>
        <category>Intranet</category>
    </portlet-entry>
Ich bin über jede Idee und Anregung dankbar!!!
Also schießt gern los!
Mfg

hitman_fh
 

DP

Top Contributor
und? wie kommste voran?

ich bin hier noch mit dem 1.4er zugange, kenne daher die bugs von 1.5 nicht.

woran hat es gelegen? ist der nicht in die builnormalcontext reingelaufen? ;)
 

hitman_fh

Mitglied
Moin!
Das Problem war, dass ich in der buildNormalContext diese try-catch-anweisung hatte, die beim catchen eigentlich nichts macht. Daher ist mir nicht aufgefallen, dass es die ganze Zeit eine Null-Pointer-Exception gab und der Code nicht bis zum
Code:
context.put(...)
ausgeführt wurde.
Vielleicht brauche ich später noch mal Deine Hilfe bezüglich einer Datenübernahme aus Oracle mittels Torque. Aber dann melde ich mich noch mal mit einer genauen Problembeschreibung.
Vielen Dank schon mal!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Apache JetSpeed-2 Server einrichten und konfigurieren 8
KonradN Apache Tomcat Schwachstelle (Versionen 8, 9, 10 und 11) Server einrichten und konfigurieren 0
H Apache Tomcat Installation/Konfiguration arbeitet nicht einwandfrei Server einrichten und konfigurieren 5
D Daten auf Apache Tomcat Server ablegen, möglich ? Server einrichten und konfigurieren 1
S Suche Apache Experte für Windows Server einrichten und konfigurieren 1
R Verbindung zwischen Apache und Tomcat über mod_jk funktioniert nur sporadisch Server einrichten und konfigurieren 0
MadMG Tomcat via Apache Proxy + Websockets Server einrichten und konfigurieren 4
G Tomcat 7 mit Apache 2 verbinden über mod_jk Server einrichten und konfigurieren 3
Mike90 Tomcat 7 INFO: The APR based Apache Tomcat Native ... Server einrichten und konfigurieren 3
T GlassFish anstatt Apache Tomcat Server einrichten und konfigurieren 29
U Normalen Apache-Http-Server und AS nebeneinander Server einrichten und konfigurieren 2
S Apache: URL rewrite Server einrichten und konfigurieren 5
K Glassfish 3.1.1 mit mod_jk und Apache 2.2 Server einrichten und konfigurieren 1
M minimalste Hardwareanforderungen für Jetty / Apache Archiva Server einrichten und konfigurieren 2
T Apache Tomcat - mehere Instanzen - Session Problem Server einrichten und konfigurieren 7
N Weiterleitung Apache mit Tomcat über mod_jk funktioniert nicht... Server einrichten und konfigurieren 7
F Verständnisfrage zu Tomcat, Apache & mod_jk Server einrichten und konfigurieren 8
S Apache 2.2 und Tomcat 6 - Resource not found Server einrichten und konfigurieren 5
K apache, tomcat mysql einrichten Server einrichten und konfigurieren 6
S JBoss & Apache 2.2 parallel betreiben Server einrichten und konfigurieren 5
P JBoss Cluster mit Apache als Loadbalancer Server einrichten und konfigurieren 1
M Serlvet wird nicht gefunden (404) Apache Tomcat 6.0 Server einrichten und konfigurieren 7
A Tomcat:Fehler HTTP Status 500 -> org.apache.jasper.Jasper Server einrichten und konfigurieren 1
G Apache Commons? Server einrichten und konfigurieren 3
Wildcard Apache Jackrabbit Server einrichten und konfigurieren 2
P Apache POI cellType Server einrichten und konfigurieren 2
S Programm startet apache james selbst? Server einrichten und konfigurieren 2
G Apache Module Server einrichten und konfigurieren 11
S Apache Fop Server einrichten und konfigurieren 5
K [Apache Axis v1.3] HTTP Basic Authentication Server einrichten und konfigurieren 1
M Apache nur lokal Server einrichten und konfigurieren 6
J Woher bekommt Apache sein Geld? Server einrichten und konfigurieren 3
J Apache Lucene - Suchen nach Kommentaren / Autor möglich ? Server einrichten und konfigurieren 1
P Tomcat und Apache Server einrichten und konfigurieren 3
B Apache und Tomcat im Team Server einrichten und konfigurieren 3
S Apache Gump Server einrichten und konfigurieren 4
D Apache-Bereich Server einrichten und konfigurieren 2
D turbine/jetspeed: angemeldete user? Server einrichten und konfigurieren 4
D Jetspeed 1.x: wie Tab-Labels zur Laufzeit umbenennen? Server einrichten und konfigurieren 2
K Jetspeed@Tomcat Installationsprobleme Server einrichten und konfigurieren 5
S Tomcat 9 mit Datasource Realm auf eine H2 Datenbank Server einrichten und konfigurieren 3
I JAVA EE Server mit integrierter Datenbank Server einrichten und konfigurieren 0

Ähnliche Java Themen

Neue Themen


Oben