Dienstag, 13. Dezember 2011

HowTo: Clustering mit Weblogic 10.3.6 und Glassfish

Im folgenden ein mehrteiliges HowTo, welches an einem einfachen Beispiel darstellen soll wie eine geclusterte Anwendung jeweils auf dem Weblogic und Glassfish Server deployed werden kann.
Die benutzte Software ist
 Die Schritte im einzelnen sind

Mittwoch, 30. November 2011

Oracle Enterprise Linux und VirtualBox: den richtigen Kernel wählen

Wer in letzter Zeit regelmässig sein Oracle Enterprise Linux Image und seine VirtualBox aktualisiert hat, z.B. das Image aus dem 'BPMN und SOA Governance Handson Workshop', hat möglicherweise eine böse Überraschung erlebt.
Zum Installieren der Gasterweiterungen wird im Menü der VirtualBox unter 'Geräte' der Punkt 'Gasterweiterungen Installieren' ausgewählt.


Beim Installieren der VBox-Extensions nach Kernel- oder VBox-Update z.B. per
sh /media/VBOXADDITIONS_4.1.6_74713/VBoxLinuxAdditions.run
bricht das Skript mit folgender Fehlermeldung ab

[root@oel5r5 ~]# sh /media/VBOXADDITIONS_4.1.6_74713/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.6 Guest Additions for Linux.........
VirtualBox Guest Additions installer
Removing installed version 4.1.6 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules        [  OK  ]
Removing existing VirtualBox non-DKMS kernel modules    [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-200.23.1.el5uek

Building the main Guest Additions module                [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

Doing non-kernel setup of the Guest Additions           [  OK  ]
Installing the Window System drivers
Installing X.Org 7.1 modules                            [  OK  ]
Setting up the Window System to use the Guest Additions [  OK  ]
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services componen[  OK  ]
Das zum Übersetzen der VBox-Extensions benötigte Packet kernel-devel-2.6.32-200.23.1.el5uek fehlt also. Leider führt die vorgeschlagene Lösung, das Packet einfach per yum nachzuinstallieren auch nicht zum Erfolg:

[root@oel5r5 ~]# yum install kernel-devel-2.6.32-200.23.1.el5uek
Loaded plugins: security
file:///media/Enterprise%20Linux%20dvd%2020100405/Server/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] No such file or directory: '/media/Enterprise Linux dvd 20100405/Server/repodata/repomd.xml'
Trying other mirror.
Setting up Install Process
No package kernel-devel-2.6.32-200.23.1.el5uek available.
Nothing to do

Im Repository Repository von Oracle liegt also kein Developer-Package für den Kernel, der mit el5uek bezeichnet ist. Hintergrund ist, dass Oracle für Enterprise Linux 5.7 als Alternative zum relativ alten Kernel 2.6.18, der auch von RedHat Linux benutzt wird, auch einen aktuelleren Kernel 2.6.32 anbietet. Einzelheiten  dazu finden sich auf Oracle.com. Dieser Kernel wurde nun im Rahmen der Updates installiert, aber es gibt zumindest in Oracle's Repository kein dazu passendes devel-package, so dass sich die VBox-Extensions nicht mehr übersetzen lassen. Andererseits sind die Optimierungen des UEK für ein Entwicklungs-/Testsystem in einer VBox ohnehin nicht relevant, so hier einfach weiter der Kernel 2.6.18 genutzt werden kann.
Hierzu muss einfach in der Datei /boot/grub/grub.conf der zu verwendende Kernel ausgewählt werden. Ich habe den (ggf. sind auch mehrere Einträge vorhanden) 2.6.32 Kernel einfach an das Ende der Liste wie folgt verschoben.

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.18-274.7.1.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-274.7.1.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-274.7.1.0.1.el5.img
title Oracle Linux Server (2.6.18-274.0.0.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-274.0.0.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-274.0.0.0.1.el5.img
title Oracle Linux Server (2.6.18-238.19.1.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-238.19.1.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-238.19.1.0.1.el5.img
title Oracle Linux Server (2.6.32-200.23.1.el5uek)
   root (hd0,0)
   kernel /vmlinuz-2.6.32-200.23.1.el5uek ro root=/dev/VolGroup00/LogVol00 rhgb quiet
   initrd /initrd-2.6.32-200.23.1.el5uek.img
Der Eintrag default=0 sorgt dafür, dass der erste Eintrag der Liste, in diesem Fall der Kernel 2.6.18-274.7.1.0.1.el5 automatisch gestartet wird. Kommentiert man die Zeile hiddenmenu aus, kann man auch beim Startvorgang auswählen, welcher Kernel verwendet werden soll.



Mit dem 2.6.18er Kernel und dem dafür vorhandenen devel-package lassen sich dann (nach Reboot) auch die VBox-Extensions wieder übersetzen.

--- UPDATE ---

Warum einfach, wenn es auch kompliziert geht ;-)
Es hätte auch gereicht, einfach das zum Kernel passende 'kernel-uek-devel...' Packet zu installieren. Danke an Lorenz Keller für den Hinweis.

Freitag, 4. November 2011

Servlet für Clustering erstellen

Nachdem der vorige Betrag gezeigt hat, wie der WebLogic Cluster aufgesetzt wird, soll jetzt ein einfaches Servlet erstellt werden, um das Clustering zu demonstrieren. Das Servlet wurde bewusst simpel gestaltet um es nachvollziehbar zu machen. Für dieses Beispiel habe ich den JDeveloper 11.1.2.0.0 benutzt.


Eine neue Anwendung wird erstellt via 'New Application...'.


Hier wird die 'Custom Application' ausgewählt.


Die Anwendung benötigt einen Namen ...


... ebenso wie das Projekt. Bei den Technologien ist 'JSP and Servlets' auszuwählen, 'Java' wird dann automatisch mit ausgewählt.


Defaults belassen und 'Finish'.


Auf dem neu erzeugten Projekt per Rechtsklick 'New...' auswählen.


Dann Auswahl von 'Web Tier' -> 'Servlets' -> 'HTTP Servlet' und OK.

Next
Next
Next

Hier können noch die Namen für das Servlet und das URL Pattern geändert werden, z.B. in 'simple' und '/cluster'


Das Servlet benötigt keine Parameter, beenden mit 'Finish'.


Als Ergebnis liefert der JDeveloper ein fertiges Servlet wie oben abgebildet.

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        
        HttpSession sess = request.getSession();
        Integer cnt = (Integer)sess.getAttribute("cnt");
        if(cnt==null)
            cnt=0;
                
        out.println("<html>");
        out.println("<head><title>Servlet1</title></head>");
        out.println("<body>");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println( new Date() );
        out.println( "<p>Bisherige Aufrufe: " + cnt + "</p>"  );
        out.println("</body></html>");
        out.close();
        
        System.out.println( new Date()+ ": doGet - bisherige Aufrufe: " + cnt );
        
        sess.setAttribute("cnt", ++cnt);
    }

Der Quellcode wird nun wie oben geändert. Hierdurch wird ein Zähler hinzugefügt und dieser vor jedem Aufruf aus der HttpSession gelesen, erhöht und zum Schluss wieder in die HttpSession geschrieben.


Die Klasse Date muss noch importiert werden. Der JDeveloper bietet freundlicherweise an, das zu erledigen. Einfach den Cursor auf der Klasse positionieren und Alt-Enter drücken.


In der daraufhin auftauchenden Auswahl bitte Date (java.util) auswählen, damit die richtige Klasse importiert wird.

Über den Run-Button kann das Servlet im internen WebLogic Server getestet werden.


Das Ergebnis sollte dann wie oben abgebildet aussehen.

Damit ist das Servlet selbst soweit fertig, im nächsten Schritt wird der Ablauf im Cluster gezeigt.

Freitag, 21. Oktober 2011

Servlet Clustering Beispiel: WebLogic Cluster Setup

In diesem Beispiel soll ein einfaches Servlet über den WebLogic Server geclustert werden. Im ersten Schritt wird hierzu eine neue Domain benötigt, alternativ kann natürlich auch eine bestehende Domain geändert werden.
Unter Windows findet man den Domain Konfigurationsassistenten auch im Startmenü, ansonsten wird er gestartet über config.exe bzw. config.sh.
Hier auswählen, ob eine bestehende Domain geändert, oder eine neue erzeugt werden soll.
In jedem Fall müssen beide Einträge für Oracle JRF ausgewählt sein, sonst gibt es später Probleme beim Deployment des Beispiels.

 
Domain-Name auswählen und weiter ...
Password festlegen...
und JDK auswählen,
Hier die 'Managed Server, Cluster und Rechner' als Optionale Konfiguration wählen.
Hier zwei managed Server über den Button 'Hinzufügen' eintragen, ggf. den Namen noch ändern.
Hier wird jetzt der Cluster über den Button 'Hinzufügen'angelegt.
Im linken Bereich unter 'Server' werden die beiden Managed Server ausgewählt und mit dem Pfeil nach rechts auf die rechte Seite unter Cluster bewegt.
Jetzt kann noch ein Rechner konfiguriert werden, falls man den Nodemanager benutzen möchte. Für dieses Beispiel ist das aber nicht notwendig.

Ggf. noch die Server dem Rechner hinzufügen
Zusammenfassung und ...
Fertig.
Der Admin-Server wird aus dem Hauptverzeichnis der Domain gestartet mit startWebLogic.cmd bzw. .sh.
Login beim Admin-Server
Hier werden die Managed Server angezeigt unter base_domain/Environment/Servers.

Die beiden Managed Server werden jeweils aus dem bin-Verzeichnis der Domain gestartet mit startManagedWeblogic.cmd JEEServer_1 bzw. _2.
Die beiden hochgefahrenen Server werden dann auch entsprechend in der Admin-Console angezeigt. Ggf. hierzu auf den kleinen Kreis aus Pfeilen klicken zum Aktualisieren.

Damit läuft der Cluster und die Anwendung kann deployed werden.

Mittwoch, 12. Oktober 2011

FMW-Deutsch live: Anwendungen professionell Modernisieren

Die Planung für den nächsten Kundenworkshop sind in vollem Gange. Dieses Mal handelt es sich nicht um einen Hands-On Workshop, sondern um drei zusammenhängende Vorträge über die wir gerne mit Ihnen diskutieren wollen. Den Workshop lassen wir dann in einem gemeinsamen Mittagessen in unseren Räumen ausklingen. Am 2.12.2011 geht es um Aspekte der Anwedungsmodernisierung, die Anmeldeseite ist ab sofort geöffnet.

Hier der vollständige Einladungstext:

- Von Visio zu ausführbaren Prozessen
- Forms-Modernisierung durch Anbindung der BPMN Human Task
- SOA-Governance bei der Anbindung von Prozessen


Unternehmen stehen ständig vor der Problematik, dass Altanwendungen auf eine moderne Architektur migriert werden müssen. Sei es weil die Fachabteilungen neue Anforderungen haben, welche mit der alten Architektur nicht mehr umsetzbar sind - zumindest nicht in einem vertretbaren Wirtschaftlichen Rahmen, oder einfach, weil eine Plattform einer Altanwendung den technischen Support verliert. Oftmals ist eine komplette Modernisierung mit einem einzigen Schritt nicht machbar, oder zumindest nicht wünschenswert. Viel mehr wird ein schrittweises Vorgehen benötigt. Die drei Vorträge sollen hierfür mögliche Lösungsszenarien aufzeigen.

Von Visio zu ausführbahren Prozessen
Das Szenario: die neuen Soll-Prozesse wurden bereits mit einem grafischen Tool, in diesem Falle Visio, festgehalten. Die Anwendungslandschaft besteht aber noch überwiegend aus monolithischen Altanwendungen. Dieser Vortrag zeigt, wie aus der Visio-Grafik ein lauffähiger BPMN-Prozess wird, der über entsprechende Adapter mit den bestehenden Anwendungen interagiert.

Forms-Modernisierung durch Anbindung der BPMN Human Task
Für die Integration in eine Service-orientierte Prozesslandschaft sind klassische Forms-Anwendungen häufig nur bedingt entwickelt worden. Für eine sinnvolle Integration muss die Anwendung aber nicht unbedingt komplett neu entwickelt werden. Am Beispiel einer unternehmensweiten Aufgaben-Verwaltung wird gezeigt wie sich eine Forms-Anwendung mit der Human-Workflow Engine der BPM-Suite integrieren.

SOA-Governance bei der Anbindung von Prozessen
Service-orientierte Architekturen sind heute ein akzeptiertes Modell zur Anwendungsintegration, auch zur Integration von Altanwendungen in moderne, Prozess-orientierte Landschaften. Hierbei ist es aber sinnvoll, von Anfang an parallel zur SOA-Entwicklung auch eine SOA-Governance aufzubauen. Dieser Vortrag zeigt auf, wie eine SOA-Governance Lösung werkzeugunterstützt die Integration von Altanwendungen in Prozesse verbessern kann

Seien Sie unser Gast und Diskutieren Sie mit uns. Neben unseren Vorträgen ist IHRE Meinung ausdrücklich gefragt. Und zum Abschluss würden wir uns freuen, wenn wir Sie in unseren Räumen noch auf ein gemeinsames Mittagessen einladen dürfen.

Anmeldung ===> Anmeldelink <===

Dienstag, 6. September 2011

BPMN-SOA-Governance Workshop: Password expired beim Start der SOA-Suite

Der Workshop ist jetzt schon ein paar Monate her. Startet man jetzt die SOA-Suite erneut (Desktop-Link 'Start SOA' oder 'Start WLS') bekommt man eine Fehlermeldung 'password expired'.

Abhilfe schaffen die folgenden Schritte:

  • Auf dem Desktop mit rechtem Mausklick ein Terminal öffnen
  • Im Terminalfenster:

    . oraenv [RETURN]
    [RETURN]
    sqlplus / as sysdba
  • In SQLPLUS dann folgendes eingeben:

    ALTER PROFILE DEFAULT LIMIT
    FAILED_LOGIN_ATTEMPTS UNLIMITED
    PASSWORD_LIFE_TIME UNLIMITED;

    alter user dev_mds identified by Oracle123;
    alter user dev_soainfra identified by Oracle123;
    alter user dev_ORABAM  identified by Oracle123;
    alter user dev_ORASDPM  identified by Oracle123;
Im Anschluss bitte das Fenster mit der SOA-Suite, welche auf den 'password expired'-Fehler gelaufen ist schliessen und neu starten, dann funktioniert alles wieder.

---8<-----------------------------------------------------------------------------------------

Update: für SOA 12c die folgenden user ändern:

alter user DEV_IAU_APPEND identified by oracle;
alter user DEV_IAU identified by oracle;
alter user DEV_OPSS identified by oracle;
alter user DEV_MDS identified by oracle;
alter user DEV_STB identified by oracle;
alter user DEV_SOAINFRA identified by oracle;
alter user DEV_ESS identified by oracle;
alter user DEV_WLS identified by oracle;
alter user DEV_UMS identified by oracle;
alter user DEV_OER identified by oracle;
alter user DEV_MFT identified by oracle;
alter user DEV_IAU_VIEWER identified by oracle;

 

Freitag, 12. August 2011

Java Magazine jetzt als elektronische Publikation

Technologisch an der Front zu sein, und die Informationen dazu per Post auf bedruckten toten Bäumen zu bekommen - das passt einfach nicht zusammen. So dachte wohl auch Oracle, denn jetzt erscheint das Java Magazine als kostenlose digitale Publikation, wahlweise interaktiv im Web oder zum Download als PDF.


Weitere Informationen und die erste Ausgabe finden sich auf OTN.

Montag, 8. August 2011

BI-Publisher für OER im WLS installieren

Der Oracle BI-Publisher 10.1.3.4.1 kommt standardmässig noch mit einem eigenen oc4j. Nutzt man bereits das Oracle Enterprise Repository (OER) 11.1.1.x, möchte man den BI-Publisher aber mit auf dem Weblogic-Server des OER betreiben, um nicht zwei unterschiedliche JEE-Container für ein Produkt betreiben zu müssen.

Der BI-Publisher kann wie folgt manuell im WLS installiert werden:

1. Download BI-Publisher
Der BI-Publisher 10.1.3.4.1 ist auf OTN. erhältlich. Das zip-File wird in ein beliebiges temporäres Verzeichnis entpackt, unter Linux/Unix wird auch gleich noch das tar-File entpackt.

2. BI-Publisher installieren
  • Ein Verzeichnis xmlpserver wird erstellt im applications-Verzeichnis der OER-Domain, wie z.B.

    /home/oracle/Oracle/Middleware/user_projects/applications/oer_domain/applications/xmlpserver
  • Aus dem entpackten zip-File im Temp-Verzeichnis wird der Inhalt der Datei

    bipublisher.10.1.3.4.1/manual/generic/xmlpserver.war

    entpackt (nicht die Datei kopiert!) in das neu erzeugte Verzeichnis xmlpserver
  • Im OER Homeverzeichnis befindet sich die Datei BIP-Oracle.zip unter

    $OER_HOME/core/tools/solutions/reports


    In diesem Archiv befindet sich der Ordner XMLP. Dieser wird in das gleiche Verzeichnis kopiert wie xmlpserver, also

    /home/oracle/Oracle/Middleware/user_projects/applications/oer_domain/applications/XMLP
  • Die Datei xmlpserver/WEB-INF/xmlp-server-config.xml wird angepasst, so dass diese auf den Ordner XMP verweist, z.B.

    <?xml version="1.0" encoding="UTF-8"?>
    <xmlpConfig xmlns="http://xmlns.oracle.com/oxp/xmlp">
      <resource>
        <file path="/home/oracle/Oracle/Middleware/user_projects/applications/bpm_domain/applications/XMLP"/>
      </resource>
    </xmlpConfig>
  • Die Fonts aus dem temporären Verzeichnis unter manual/fonts müssen in das fonts-Verzeichnis der benutzten JRE kopiert werden, z.B. nach

    /home/oracle/Oracle/Middleware/jdk160_24/jre/lib/fonts
  • Die xmlpserver-Anwendung wird über die WLS-Console deployed und gestartet.

  • Auf der Deployments-Seite klickt man ggf. auf 'Lock &amp; Edit' und dann rechts auf einen 'Install'-Button


  • Hier wird zum Verzeichnis xmlpserver navigiert -> Next


  • 'Install this deployment as an application' wird hier ausgewählt -> Next

  • Auswahl 'I will make the deployment accessible from the following location' -> Finish
    Ggf. 'Activate Changes', danach links wieder auf 'Deployments klicken.


  • Die Anwendung wird gestartet durch Setzen des Hakens und Start/Servicing all requests. Danach mit 'Yes' bestätigen und der Status wechselt auf 'Active'.


  • Getestet werden kann die Installation über die entsprechende URL, z.B.

    http://oel5r5:7101/xmlpserver/servlet/report

    Benutzername und Password sind beide 'Administrator'
3. Oracle Enterprise Repository für BI-Publisher konfigurieren


  • Im BI-Publisher Web-Frontend wird im Bereich Admin die JDBC-Connection ausgewählt

  • Hier die Data Source 'OER' auswählen

  • Dann die Verbindungsinformationen anpassen und per 'Test Connection' überprüfen. Beenden mit 'Apply'

  • Jetzt noch im Bereich Admin unter 'Users' das Password von oer setzen
  • Diese Konfiguration muss jetzt noch dem OER bekannt gemacht werden. Hierzu werden im OER auf dem Admin-Reiter unter 'System Settings' die folgenden Parameter entsprechend gesetzt:
    - Enable Reports = True
    - Report Server URL = http://oel5r5:7101/xmlpserver/OER
    - Report Server Endpoint URL = http://oel5r5:7101/xmlpserver/services/PublicReportService
    - Report Server Username = oer
    - Report Server Password = wie oben gesetzt

  • Im Reports-Bereich des OER kann die Integration mit dem BI-Publisher überprüft werden. Tauchen hier im oberen Bereich rote Fehlermeldungen auf, ist bei den letzten Schritten etwas falsch gelaufen und diese sollten überprüft werden. 

Sofern alles richtig gelaufen ist, können die Reports ausprobiert werden, wie hier z.B. der 'Policy Status Report'.