AVID-Übung 3 - Institut für Verteilte Systeme
Transcription
AVID-Übung 3 - Institut für Verteilte Systeme
Abteilung Verteilte Systeme Projektgruppe AspectIX Universität Ulm Fakultät für Informatik AVID-Übung 3 EJB mit JBoss und Eclipse 17. Juni 2004 Andreas I. Schmied (schmied@inf...) AVID-Übung 3 Aufgabenstellung Sun's J2EE 1.4 Tutorial • durcharbeiten 8^] • ggf. Kapitel überspringen (XML-Basics, ...) JBoss-IDE Eclipse-Plugin: • • • • • guter Tutorial Guide als Einstieg integrierter XDoclet-Support ! integriertes Packaging und Deployment ! JBoss-Server Management ! JBoss-Debugging ! JBoss Application Server • eigenes Tutorial: Anpassungen für Sun's Tutorial nächste Übung 24.6. • Fragen zum Tutorial und eigene EJB-Aufgabe Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 2/21 AVID-Übung 3 Sun's J2EE Tutorial Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 3/21 Sun's J2EE Tutorial AVID-Übung 3 Inhalt Einstieg: JBoss-IDE Tutorial Guide bearbeiten Reihenfolge für die Übung zuerst • Overview • Getting Started, Servlets • Enterprise Beans danach • JSP • Duke's Bank Case Study später • Transactions, ... (aus Sun's J2EE Tutorial) Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 4/21 AVID-Übung 3 JBoss Open-Source J2EE Application Server Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 5/21 JBoss AVID-Übung 3 Installation Auspacken des JBoss-Tarballs/Zips: bin Skripte: run.sh/bat, shutdown.sh/bat client Client-JARs, -Configuration docs Dokumentation und DTD/Schemata lib Server-JARs server verschiedene Server-Konfigurationen (all, minimal, default) Danach JBoss-IDE in Eclipse integrieren (IDE Installation Guide) • automatisch im Eclipse Update-Service • manuell entpackter Tarball in eclipse/plugins, eclipse/features Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 6/21 JBoss AVID-Übung 3 Konfigurationen Startskript: bin/run.sh [-c <userconf-dir>|minimal|all] Verzeichnisse pro Konfiguration in ./server/<conf-dir>: conf u.a. jboss-service.xml data Daten von eingebetteter Hypersonic DB und JBossMQ deploy packed/unpacked JAR/WAR/EAR files lib weitere JARs, JDBC-Provider, etc. work Tomcat Arbeitsverzeichnis (für JSPs) (Auswahl) Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 7/21 JBoss AVID-Übung 3 Management Default-Webadresse: http://localhost:8080 bzw. http://127.0.0.1:8080 JBoss Server-Struktur: • kleiner Minimal-Kern, Funktionalität ausgelagert in ... • Managed Beans (MBeans) der Java Management Extensions (JMX) Deployment: • JARs mit besonderem Aufbau: EAR bzw. WAR • automatisch: Archiv in <config>/deploy kopieren • zur Laufzeit mittels Deployer MBean in Eclipse Web Management Konsolen • http://localhost:8080/jmx-console Info, Konfiguration, direkter Methodenaufruf an MBeans • http://localhost:8080/web-console - Statistiken (in Arbeit) Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 8/21 JBoss AVID-Übung 3 Screenshot: Web-Konsole Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 9/21 JBoss AVID-Übung 3 JBoss-IDE Tutorial: Fibonacci-SessionBean • Aufruf via <FORM> in http://localhost:8080/fibo/index.html • Servlet Compute wird als Form-Action aufgerufen • instantiiert Home und Bean • aktiviert Bean und erzeugt Ergebnis als dyn. HTML-Seite Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 10/21 JBoss AVID-Übung 3 JBoss-IDE Tutorial: Einzelschritte • Java-Projekt erzeugen • Build-Path inkl.: javax.servlet.jar, jboss-j2ee.jar • Bean und Servlet implementieren • Projekt-Properties für XDoclet: EJB- und Servlet-Konfiguration • HTML-Seite verfassen • Deployment Descriptors (EJB, Web), EJB-Interfaces generieren • Application Descriptor verfassen • Packaging-Skript verfassen und ausführen für ..EJB.jar, ..EJB-client.jar, ..Web.war, ..App.ear • JBoss starten und Deployment • Tests und Debugging, ... Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 11/21 JBoss AVID-Übung 3 HTML-Formular und Ausgabe Formular Ausgabe Getestet mit: Eclipse 3M9, JDK 1.4.2, JBoss 3.2.3, JBoss-IDE 1.2.43 Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 12/21 JBoss AVID-Übung 3 Bean-Quellcode package tutorial.ejb; import java.rmi.RemoteException; import javax.ejb.*; /** @ejb.bean name = "Fibo" * display-name = "Fibo EJB" * description = "EJB that computes Fibonacci suite" * view-type = "remote" * jndi-name = "ejb/tutorial/Fibo" */ public class FiboBean implements SessionBean { ... /** @ejb.create-method */ public void ejbCreate() throws CreateException {} /** @ejb.interface-method view-type = "remote" */ public double[] compute(int number) { ... } public public public public void void void void ejbActivate() throws EJBException, ... ejbPassivate() throws EJBException, ... ejbRemove() throws EJBException, ... setSessionContext(SessionContext sc) ... {} {} {} {} } Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 13/21 JBoss AVID-Übung 3 Servlet-Quellcode package tutorial.web; import tutorial.interfaces.Fibo; ...FiboHome; /** ... */ public class ComputeServlet extends HttpServlet { ... FiboHome home; String title; protected void doPost(HttpServletRequest request, HttpServletResponse response) ... { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head>..."+title+"...<body>"); int limit = "(int)" request.getParameter("limit"); Fibo bean = home.create(); double[] result = bean.compute(limit); bean.remove(); printResultHTML(out, result); out.println("</body></html>"); out.close(); } } Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 14/21 JBoss AVID-Übung 3 Servlet-Quellcode: Bean-Home initialisieren public class ComputeServlet extends HttpServlet { ... FiboHome home; String title; public void init() throws ServletException { Context context = new InitialContext(); title = (String) context.lookup("java:/comp/env/Title"); Object ref = context.lookup("java:/comp/env/ejb/Fibo"); home = (FiboHome) PortableRemoteObject.narrow(ref, FiboHome.class); } } • JNDI-Objekte java:/comp/env/... via Deployment definiert • suche Component Environment über Einträge im Verzeichnisdienst Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 15/21 JBoss AVID-Übung 3 Servlet-Quellcode: XDoclet-Tags /** * @web.servlet * * * * @web.servlet-mapping * * @web.env-entry * * * * * @web.ejb-ref * * * * * * @jboss.ejb-ref-jndi * */ name = "ComputeServlet" display-name = "Computation Servlet" description = "Servlet that computes..." url-pattern = "/Compute" name = "Title" type = "java.lang.String" value = "Fibonacci computation" description = "Example of Env Entry" name = "ejb/Fibo" type = "Session" home = "tutorial.interfaces.FiboHome" remote = "tutorial.interfaces.Fibo" description = "Reference to Fibo EJB" ref-name = "ejb/Fibo" jndi-name = "ejb/tutorial/Fibo" public class ComputeServlet extends HttpServlet { ... } Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 16/21 JBoss AVID-Übung 3 Application Descriptor <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE application PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN" "http://java.sun.com/dtd/application_1_3.dtd"> <application> <display-name>Sum Application</display-name> <module> <ejb>FiboEJB.jar</ejb> </module> <module> <web> <web-uri>FiboWeb.war</web-uri> <context-root> /fibo </context-root> </web> </module> </application> Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 17/21 JBoss AVID-Übung 3 Eclipse JBoss-IDE Screenshots (1) Projekt-Kontext EAR-Kontext Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 18/21 JBoss AVID-Übung 3 Eclipse JBoss-IDE Screenshots (2) XDoclet-Konfigurationen Packaging-Skript Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 19/21 AVID-Übung 3 Anhang Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 20/21 Anhang AVID-Übung 3 Literatur und Installation Lokaler Mirror auf der AVID-Webpage! Sun's J2EE Tutorial • http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html inkl. Sourcen JBoss • Application Server 3.2.3/4 http://www.jboss.org/downloads/index • IDE 1.2.43 (Eclipse Plug-in) http://jboss.sourceforge.net/jbosside/updates • Anpassung von Sun's J2EE Tutorial http://www.jboss.org/docs/jbossj2ee-src.zip -> Pool? => siehe auch Literaturlinks der letzten Übung Copyright © 2004 Andreas I. Schmied (schmied@inf...), Abteilung Verteilte Systeme, Universität Ulm 21/21