IBM WebSphere

+ andere TechDocs
+ Java EE
+ EJB
+ IBM WebSphere
+


Java EE (Java Platform, Enterprise Edition) ist eine durch Schnittstellen definierte Architektur für Unternehmensanwendungen, bestehend aus verschiedenen Komponenten.

Java-EE-Anwendungen werden auf Java EE Application Servern betrieben. Bekannte Java EE Application Server sind zum Beispiel: GlassFish, JBoss, Oracle WebLogic, IBM WebSphere und Apache Geronimo.



Inhalt

  1. Installation des IBM WebSphere V6.1 unter Windows
  2. Einrichtung einer Data Source zu einer MySQL-Datenbank
  3. JNDI-Einträge anzeigen
  4. Webanwendung mit Servlet, JSP, JavaBean, EJB-Zugriff und DB-Zugriff
  5. Links auf weiterführende Informationen


Installation des IBM WebSphere V6.1 unter Windows

  1. Downloaden Sie WebSphere Application Server V6.1 von http://www.ibm.com/developerworks/websphere/downloads (z.B. 'was.cd.6100.trial.base.windows.ia32.zip').

  2. Entpacken Sie die .zip-Datei, starten Sie das Installationsprogramm 'launchpad.exe' und führen Sie die Installationsschritte durch.

    In der folgenden Beschreibung wird davon ausgegangen, dass Sie in das Verzeichnis 'C:\IbmWebSphere' installieren.

  3. Starten Sie WebSphere über folgenden Kommandozeilenbefehl:

    cmd.exe /c "C:\IbmWebSphere\AppServer\profiles\AppSrv01\bin\startServer.bat" server1 -profileName AppSrv01

    Stoppen Sie WebSphere über folgenden Kommandozeilenbefehl:

    cmd.exe /c "C:\IbmWebSphere\AppServer\profiles\AppSrv01\bin\stopServer.bat" server1 -profileName AppSrv01

    (Passen Sie jeweils die Pfade an.)

  4. Überprüfen Sie die Installation.
    Rufen Sie die während der Installation genannten Testanwendungen auf, zum Beispiel:

    http://localhost:9080/ivt/ivtserver?parm2=ivtservlet

    http://localhost:9080/ivt/ivtserver?parm2=ivtAddition.jsp

    http://localhost:9080/ivt/ivtserver?parm2=ivtejb

  5. Überprüfen Sie die Dateien in den Verzeichnissen:

    C:\IbmWebSphere\AppServer\profiles\AppSrv01\logs\server1 und

    C:\IbmWebSphere\AppServer\profiles\AppSrv01\logs

  6. In 'C:\IbmWebSphere\AppServer\profiles\AppSrv01\logs\AboutThisProfile.txt' finden Sie Definitionen und Port-Belegung, zum Beispiel folgendermaßen:

    Profilname: AppSrv01
    Knotenname: MeinPcNode01
    Hostname: MeinPc
    Port für Administrationskonsole: 9060
    Sicherer Port für Administrationskonsole: 9043
    Port für HTTP-Transport: 9080
    Port für HTTPS-Transport: 9443
    Bootstrap-Port: 2809
    SOAP-Connector-Port: 8880

    Weitere Ports finden Sie in 'C:\IbmWebSphere\AppServer\profiles\AppSrv01\properties\portdef.props'.

  7. Überprüfen Sie die WebSphere-Administrationskonsole über folgende URLs:

    http://localhost:9060/ibm/console oder

    https://localhost:9043/admin



Einrichtung einer Data Source zu einer MySQL-Datenbank

  1. Falls Sie noch keine MySQL-Datenbank installiert haben: Installieren Sie MySQL zum Beispiel wie beschrieben unter: mysql.htm#InstallationUnterWindows. Die folgende Beschreibung geht davon aus, dass Sie als 'Database-Name' "MeineDb" wählen ("CREATE DATABASE MeineDb;").
  2. Downloaden Sie den zur Datenbank passenden JDBC-Treiber, für MySQL z.B. 'mysql-connector-java-5.1.16-bin.jar' aus 'mysql-connector-java-5.1.16.zip'.
    Kopieren Sie den JDBC-Treiber in ein vom WebSphere ereichbares Verzeichnis, zum Beispiel: 'C:\IbmWebSphere\lib'.
  3. Starten Sie die WebSphere-Administrationskonsole über:
    http://localhost:9060/ibm/console

  4. Klicken Sie in der linken Spalte auf: '[+] Ressourcen' | '[+] JDBC' | 'JDBC-Provider'.

  5. Wählen Sie unter '[+] Geltungsbereich' zum Beispiel 'cells:localhostNode01Cell' und klicken Sie auf 'Neu'.

  6. Geben Sie ein:

    Datenbanktyp: Benutzerdefiniert
    Name der
    Implementierungsklasse:
    com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
    Name und Beschreibung: MeinMySqlJdbcProvider
    'Weiter'
    Klassenpfad: C:\IbmWebSphere\lib\mysql-connector-java-5.1.16-bin.jar   [Pfad anpassen!]
    'Weiter', 'Fertig stellen'

    Wenn Sie wollen, können Sie die bisherigen Einstellungen 'speichern'.

  7. Klicken Sie in der linken Spalte auf: '[+] Ressourcen' | '[+] JDBC' | 'JDBC-Provider'.
    Rechts in der Liste sehen Sie Ihren neu erzeugten JDBC-Provider-Eintrag 'MeinMySqlJdbcProvider'. Klicken Sie darauf.
    Klicken Sie unter 'Weitere Merkmale' auf 'Datenquellen'.
    Wählen Sie 'Neu'.

  8. Geben Sie ein:

    Name der Datenquelle: MeineMySqlDatenquelle
    JNDI-Name: jdbc/MeinDatasourceJndiName
    'Weiter':
    Name der Helper-Klasse
    für Datenspeicher:
    com.ibm.websphere.rsadapter.ConnectJDBCDataStoreHelper
    'Weiter', 'Fertig stellen':
  9. Klicken Sie in der linken Spalte auf: '[+] Ressourcen' | '[+] JDBC' | 'Datenquellen'.
    Rechts in der Liste sehen Sie Ihren neu erzeugten JDBC-Provider-Eintrag 'MeineMySqlDatenquelle'. Klicken Sie darauf.
    Klicken Sie unter 'Weitere Merkmale' auf 'Benutzerdefinierte Merkmale'.

  10. Fügen Sie der Eigenschaftenliste weitere Name/Werte-Paare hinzu, indem Sie jeweils einzeln zuerst 'Neu' betätigen, einen 'Namen' und den dazu gehörenden 'Wert' eingeben, den 'Typ' auf 'java.lang.String' setzen und 'OK' betätigen:

    Name   Wert
    factory  =  com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory
    serverName  =  localhost   [DB-Server-Adresse anpassen!]
    port  =  3306
    databaseName  =  MeineDb?autoReconnect=true   [Database-Name anpassen!]
    user  =  root
    password  =  mysqlpwd

    Klicken Sie zuletzt auf den nach unten zeigenden Pfeil hinter 'Wert' um die Einträge zu kontrollieren.

    Wichtig: Klicken Sie auf 'speichern'.

  11. Klicken Sie in der linken Spalte auf: '[+] Ressourcen' | '[+] JDBC' | 'Datenquellen'.
    Klicken Sie in der Liste auf Ihren JDBC-Provider-Eintrag 'MeineMySqlDatenquelle'.
    Klicken Sie auf 'Verbindung testen'.



JNDI-Einträge anzeigen

JNDI (Java Naming and Directory Interface) bietet einen Namens- und Verzeichnisdienst, über den Objekte und Dienste gefunden und verfügbar gemacht werden.

Besonders zu Beginn kann es sehr hilfreich sein, die genauen Namen aller JNDI-Einträge anzeigen zu lassen. Zum Beispiel der Name für das 'UserTransaction'-Objekt heißt bei den verschiedenen Java EE Application Servern unterschiedlich.

Führen Sie hierfür das Testprogramm unter jee-jndi.htm#Auslesen-Namen-im-JNDI aus.



Webanwendung mit Servlet, JSP, JavaBean, EJB-Zugriff und DB-Zugriff

  1. Installieren Sie sowohl ein aktuelles Java SE JDK (z.B. JDK 6) als auch Ant, zum Beispiel wie beschrieben unter java-install.htm.

  2. Legen Sie für eine Projektverzeichnisstruktur folgende in eckigen Klammern dargestellten Verzeichnisse an:

    [\MeinWorkspace]
      '- [MeineWebApp]
           |- [lib]
           |    '- servlet.jar
           |- [src]
           |    |- [meinjavabeanpkg]
           |    '- [meinservletpkg]
           '- [webapp]
                '- [WEB-INF]
                     '- [lib]
                           '- ivtEJB.jar
    
  3. Kopieren Sie die 'servlet.jar'-Lib aus dem WebSphere-Verzeichnis
    'C:\IbmWebSphere\AppServer\deploytool\itp\plugins\org.eclipse.tomcat_4.1.30.1'
    in das '<Projektverzeichnis>\lib'-Verzeichnis
    und die 'ivtEJB.jar' aus dem WebSphere-Verzeichnis
    'C:\IbmWebSphere\AppServer\profiles\AppSrv01\installedApps\<MeinPc>Node01Cell\ivtApp.ear'
    in das '<Projektverzeichnis>\webapp\WEB-INF\lib'-Verzeichnis.

  4. Speichern Sie im Verzeichnis '<Projektverzeichnis>\src\meinjavabeanpkg' die folgende JavaBean-Datei 'MeineJavaBean.java':

    package meinjavabeanpkg;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class MeineJavaBean
    {
      public String getDateString()
      {
        return (new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")).format(new Date()) + " h";
      }
    }
    
  5. Speichern Sie im Verzeichnis '<Projektverzeichnis>\src\meinservletpkg' die folgende Servlet-Datei 'MeinServlet.java':

    package meinservletpkg;
    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class MeinServlet extends HttpServlet
    {
      public void doGet( HttpServletRequest requ, HttpServletResponse resp )
      throws ServletException, IOException
      {
        resp.setContentType( "text/html" );
        PrintWriter out = resp.getWriter();
        out.println( "<html>" );
        out.println( "Hallo, mein erstes Servlet meldet sich." );
        out.println( "</html>" );
        out.close();
      }
    }
    
  6. Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp' die folgende Start-Index-Datei 'index.jsp':

    <html>
    <head><title>Meine Start-Seite</title></head>
    <body>
    <h1>Meine Start-Seite (index.jsp)</h1>
    <p><a href="helloservlet">helloservlet</a></p>
    <p><a href="HelloJSP.jsp">HelloJSP.jsp</a></p>
    <p><a href="HelloJavaBean.jsp">HelloJavaBean.jsp</a></p>
    <p><a href="HelloEJB.jsp">HelloEJB.jsp</a></p>
    <p><a href="HelloDB.jsp">HelloDB.jsp</a></p>
    </body>
    </html>
    
  7. Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp' die folgende JSP-Datei 'HelloJSP.jsp':

    <%@ page import="java.text.SimpleDateFormat" %>
    <%@ page import="java.util.Date" %>
    
    <html>
    <head><title>Hello JSP</title></head>
    <body>
    <h2>Hallo, meine erste JSP-Seite meldet sich.</h2>
    <%= request.getRemoteHost() %>,
    <%= (new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")).format(new Date()) + " h" %>
    </body>
    </html>
    
  8. Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp' die folgende JSP-Datei 'HelloJavaBean.jsp':

    <%@ page import="meinjavabeanpkg.MeineJavaBean" %>
    
    <html>
    <head><title>Hello JavaBean</title></head>
    <body>
    <h2>Hallo, meine JSP-Seite mit JavaBean meldet sich.</h2>
    <%= request.getRemoteHost() %><br>
    <%
      MeineJavaBean jb = new MeineJavaBean();
      out.println( jb.getDateString() );
    %>
    </body>
    </html>
    
  9. Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp' die folgende JSP-Datei 'HelloEJB.jsp':

    <%@ page import="java.util.*" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="com.ibm.websphere.ivt.ivtEJB.*" %>
    
    <html>
    <head><title>Hello EJB</title></head>
    <body>
    <h2>Hallo, meine JSP-Seite mit EJB-Zugriff meldet sich.</h2>
    <%
      Context ctx = new InitialContext();
      Object  ref = ctx.lookup( "ejb/ivtEJBObject" );
      ivtEJBHome home = (ivtEJBHome) javax.rmi.PortableRemoteObject.narrow( ref, ivtEJBHome.class );
      ivtEJBObject ivtEJB = home.create();
      ivtEJB.addItem( "Mein Test-Item" );
      Vector v = ivtEJB.getContents();
      for( int i=0; v!=null && i<v.size(); i++ ) {
        out.println( v.get( i ) );
      }
    %>
    </body>
    </html>
    

    (Bezüglich EJB und 'ctx.lookup' siehe: jee-ejb2.htm und jee-jndi.htm.)

  10. Voraussetzung für die folgende JSP-Seite ist die Einrichtung einer DataSource in WebSphere, zum Beispiel so wie oben beschrieben.

    Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp' die folgende JSP-Datei 'HelloDB.jsp':

    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*" %>
    <%@ page import="javax.naming.*" %>
    <%@ page import="javax.sql.DataSource" %>
    <%@ page import="javax.transaction.*" %>
    
    <html>
    <head><title>Hello DB</title></head>
    <body>
    <h2>Hallo, meine JSP-Seite mit Datenbank-Zugriff meldet sich.</h2>
    <%
      Context   ctx = new InitialContext();
      DataSource ds = (DataSource) ctx.lookup( "jdbc/MeinDatasourceJndiName" );
      Connection cn = null;
      Statement  st = null;
      ResultSet  rs = null;
      try {
        cn = ds.getConnection();
        st = cn.createStatement();
        rs = st.executeQuery( "Select * from MeineTestTabelle" );
        if( rs.next() ) out.println( "Ergebnis: " + rs.getString( 1 ) + "<br>" );
        out.println( cn.getMetaData().getDatabaseProductName() + ", " );
        out.println( cn.getMetaData().getDatabaseProductVersion() + "<br>" );
      } finally {
        try { if( null != rs ) rs.close(); } catch( Exception ex ) {/*ok*/}
        try { if( null != st ) st.close(); } catch( Exception ex ) {/*ok*/}
        try { if( null != cn ) cn.close(); } catch( Exception ex ) {/*ok*/}
      }
    %>
    </body>
    </html>
    

    Passen Sie 'MeinDatasourceJndiName' 'MeineTestTabelle' an Ihre DataSource an.

  11. Speichern Sie im Verzeichnis '<Projektverzeichnis>\webapp\WEB-INF' die folgende Webanwendungs-Konfigurations-Datei 'web.xml':

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC
      '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
      'http://java.sun.com/dtd/web-app_2_3.dtd'>
    <web-app>
      <display-name>Meine WebApp</display-name>
      <servlet>
        <servlet-name>MeinServletName</servlet-name>
        <servlet-class>meinservletpkg.MeinServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>MeinServletName</servlet-name>
        <url-pattern>/helloservlet</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    
  12. Speichern Sie im Verzeichnis '<Projektverzeichnis>' die folgende Ant-Datei 'build.xml':

    <project name="MeinWebAppProjekt" default="Usage">
      <!-- <property file="build.properties" /> -->
      <property name="app.name"   value="MeineWebApp" />
      <property name="deploy.dir" value="dist" />
      <property name="dist.dir"   value="dist" />
      <property name="lib.dir"    value="lib" />
      <property name="src.dir"    value="src" />
      <property name="webapp.dir" value="webapp" />
      <property name="WEBINF.dir" value="${webapp.dir}/WEB-INF" />
      <path id="compile.classpath">
        <fileset dir="${lib.dir}" includes="*.jar" />
        <fileset dir="${WEBINF.dir}/lib" />
        <pathelement path="${WEBINF.dir}/classes" />
      </path>
      <target name="Usage">
        <echo message="Availiable Targets" />
        <echo message="  clean     : Delete ${WEBINF.dir}/classes, ${dist.dir}" />
        <echo message="  compile   : Compile from ${src.dir} to ${WEBINF.dir}/classes" />
        <echo message="  create-war: Create ${dist.dir}/${app.name}.war" />
        <echo message="  deploy-war: Copy ${dist.dir}/${app.name}.war to ${deploy.dir}" />
      </target>
      <target name="clean"
              description="Delete ${WEBINF.dir}/classes, ${dist.dir}">
        <delete dir="${WEBINF.dir}/classes" />
        <delete dir="${dist.dir}" />
      </target>
      <target name="compile"
              description="Compile from ${src.dir} to ${WEBINF.dir}/classes">
        <mkdir dir="${WEBINF.dir}/lib" />
        <mkdir dir="${WEBINF.dir}/classes" />
        <javac srcdir="${src.dir}" destdir="${WEBINF.dir}/classes">
          <classpath refid="compile.classpath" />
        </javac>
        <copy todir="${WEBINF.dir}/classes">
          <fileset dir="${src.dir}" excludes="**/*.java" />
        </copy>
      </target>
      <target name="create-war" depends="compile"
              description="Create ${dist.dir}/${app.name}.war">
        <mkdir dir="${dist.dir}" />
        <war destfile="${dist.dir}/${app.name}.war" webxml="${WEBINF.dir}/web.xml">
          <fileset dir="${webapp.dir}" includes="**/*.*"
                   excludes="**/web.xml, **/servlet*.jar, **/junit*.jar" />
        </war>
      </target>
      <target name="deploy-war" depends="create-war"
              description="Copy ${dist.dir}/${app.name}.war to ${deploy.dir}">
        <copy todir="${deploy.dir}" preservelastmodified="true">
          <fileset dir="${dist.dir}" includes="${app.name}.war" />
        </copy>
      </target>
    </project>
    
  13. Ihr Projektverzeichnis muss jetzt so aussehen ('dist' und 'classes' erscheinen erst nach dem 'Ant'-Lauf):

    [\MeinWorkspace]
      '- [MeineWebApp]
           |- [dist]
           |    '- ...
           |- [lib]
           |    '- servlet.jar
           |- [src]
           |    |- [meinjavabeanpkg]
           |    |    '- MeineJavaBean.java
           |    '- [meinservletpkg]
           |         '- MeinServlet.java
           |- [webapp]
           |    |- [WEB-INF]
           |    |    |- [classes]
           |    |    |     '- ...
           |    |    |- [lib]
           |    |    |     '- ivtEJB.jar
           |    |    '- web.xml
           |    |- HelloDB.jsp
           |    |- HelloEJB.jsp
           |    |- HelloJavaBean.jsp
           |    |- HelloJSP.jsp
           |    '- index.jsp
           '- build.xml
    
  14. Öffnen Sie ein Kommandozeilenfenster und geben Sie die folgenden Kommandos ein:

    cd \MeinWorkspace\MeineWebApp

    ant create-war

    Im '<Projektverzeichnis>\dist'-Verzeichnis wird das Webarchiv 'MeineWebApp.war' generiert.

  15. Starten Sie zuerst WebSphere und dann über 'http://localhost:9060/ibm/console' die WebSphere-Administrationskonsole.

  16. Klicken Sie in der linken Spalte auf: '[+] Anwendungen' | 'Enterprise Anwendungen'.
    Rechts in der Liste sehen Sie die bereits vorhandene EJB 'ivtApp'.

  17. Klicken Sie in der linken Spalte auf: 'Neue Anwendung installieren'.
    Klicken Sie rechts unter 'Pfad der neuen Anwendung' auf 'Durchsuchen...' und geben Sie als Pfad ein: '\MeinWorkspace\MeineWebApp\dist\MeineWebApp.war'.
    Geben Sie unter 'Stammkontext' ein: 'MeineWebApp'.
    Klicken Sie auf 'Weiter', 'Weiter', 'Weiter', 'Weiter', 'Fertig stellen' und 'speichern'.

  18. Klicken Sie in der linken Spalte auf: '[+] Anwendungen' | 'Enterprise Anwendungen'.
    Rechts in der Liste sehen Sie jetzt 'MeineWebApp_war'.
    Falls rechts daneben der 'Anwendungsstatus' keinen grünen Pfeil, sondern ein rotes Kreuz zeigt:
    Aktivieren Sie die 'Auswählen'-Checkbox vor 'MeineWebApp_war' und klicken Sie auf 'Starten'. Jetzt erscheint der grüne Pfeil.

  19. Testen Sie Ihre Webanwendung. Klicken Sie für die einzelnen Tests nacheinander auf folgende Links:

    http://localhost:9080/MeineWebApp

    http://localhost:9080/MeineWebApp/helloservlet

    http://localhost:9080/MeineWebApp/HelloJSP.jsp

    http://localhost:9080/MeineWebApp/HelloJavaBean.jsp

    http://localhost:9080/MeineWebApp/HelloEJB.jsp

    http://localhost:9080/MeineWebApp/HelloDB.jsp



Links auf weiterführende Informationen





Weitere Themen: andere TechDocs | JSP | Java EE | EJB | SQL
© 1998-2007 Torsten Horn, Aachen