PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JSP: Zugriff auf Beans unter Apache Jakarta Tomcat 5.5.9



MJA
11.07.2005, 13:40
Tag zusammen.

Kennt sich hier einer mit J2EE (Java 2 Enterprise Edition) aus, bzw. mit JSP/Servlets? Ich will aus einer JSP auf ein JavaBean zugreifen, was ja eigentlich kein Problem sein sollte. Als Servlet Container benutze ich Tomcat 5.5.
Hier erstmal der Code, den ich zum Zugriff auf das Bean verwende:

<%@ page contentType="text/html; charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<jsp:useBean id="bean" scope="session" class="firstBean.Bean" />
<jsp:setProperty name="bean" property="name" value="Beanchen" />
<%! bean.getName() %>
<% firstBean.printOut("Hallo"); %>
</body>
</html>

Tomcat gibt beim Aufruf der Seite (http://localhost:8080/Test/index.jsp) aus:
The value for the useBean class attribute firstBean.Bean is invalid.

Ich habe die Datei Bean.class hier abgelegt: <tomcat-verzeichniss>/webapps/ROOT/Test/WEB-INF/classes/firstBean/Bean.class
Die JSP liegt unter: <tomcat-verzeichniss>/webapps/ROOT/Test/index.jsp

Hier noch der Code von Bean.java:

package firstBean;

import java.io.Serializable;

public class Bean
implements Serializable
{
private String name;

public Bean()
{
name = "Bean";
}

public void printOut(String message)
{
System.out.println(message);
}

public String getName()
{
return name;
}

public void setName(String name)
{
this.name = name;
}
}

Vielleicht kann mir ja jemand sagen, woran das liegt? Ich hab auch schon probiert das Bean unter <tomcat-verzeichniss>/webapps/ROOT/Test/WEB-INF/classes/Bean.class abzulegen, das ging auch nicht.
Ich hoffe, hier kann jemand helfen.

Gruß,
Jan.

eFFex
11.07.2005, 14:33
hmm...also ich hab gerade ein kleineres Projekt in J2EE fertig gestellt...
Da hatten wir den Zugriff über den Service Locator (findest du auf der SUN-Page) benutzt....
Der Fehlermeldung nach ist wohl hier
<jsp:useBean id="bean" scope="session" class="firstBean.Bean" />
das class Attribute nciht so richtig.....probier vlt. mal nur "firstBean" oder so...

MJA
11.07.2005, 14:52
Du meinst nur "Bean", "firstBean" ist ja die Angabe des Packages.
Wie auch immer, ich habe auch schon ausprobiert, nur "Bean" oder nur "firstBean" zu nehmen, das klappte nicht.
Ich habe das Beispiel-JSP aus meinem Java-Buch (http://www.galileocomputing.de/openbook/javainsel4) übernommen, damit klappte es auch nicht, allerdings ist da nie genau angegeben, wo ich die Klasse ablegen soll. Da steht Klassen sollen in das Verzeichniss WEB-INF/classes der Webapplikation gelegt werden. Und halt in das passende package.
Was ist der Service Locator?

Gruß,
Jan.

eFFex
11.07.2005, 15:01
da sagste bspw. getRemoteHome oder getLocalHome, als Parameter den jndi-name der Bean und du bekommst das gewünschte home-Interface

linux_80
11.07.2005, 15:01
Hallo,
so an sich hat das schon gepasst da oben,
nur scheint die Klasse nicht in dem Pfad zu sein in dem Tomcat sucht !

Ich denke die Klasse sollte statt hier:
<tomcat-verzeichniss>/webapps/ROOT/Test/WEB-INF/classes/firstBean/Bean.class
nach hier:
<tomcat-verzeichniss>/webapps/ROOT/WEB-INF/classes/firstBean/Bean.class

MJA
11.07.2005, 20:19
@linux_80: Ne ne, das hat schon seine Richtigkeit. Aber ich habs trotzdem nochmal ausprobiert wie du es gesagt hast, das hat genausowenig funktioniert.

Gruß,
Jan.

MJA
25.07.2005, 21:44
Es funktioniert jetzt, ich habe Tomcat einfach neu installiert, aber im Prinzip weiß ich nicht, was anders ist. Wie auch immer, es geht jetzt.
Trotzdem vielen Dank für die Antworten!

Gruß,
Jan.