TomEE Server configuratie voor de demo apps

Dit artikel beschrijft welke configuratie nodig is om de demo applicaties zoals beschreven in artikel  JEE Demo Apps te draaien op een TomEE JEE Server.

De volgende configuratie items zijn nodig om de demo apps op een TomEE server te kunnen draaien:

  • Resource configuratie in openejb.xml : dit betreft een configuratie bestand met resource definitions voor de databases en JavaMail resources.
  • JAAS Security configuratie: dit betreft een aantal bestanden :
    • Definitie van gebruikte login module in bestand “server.xml”
    • Specificatie van de login module in bestand “login.config”
    • TomEE Server Security opstart optie

Resource Configuratie : openejb.xml

Het openejb.xml bestand bevat resource definities waaronder de gebruikte databases en de JavaMail resources. De locatie van dit bestand is de TomEE/TomCat installatie sub-directory : [TomEE Installdir]\conf.
Als gebruik wordt gemaakt van opstart van TomEE binnen Eclipse dan kan dit bestand ook in de server map van de betreffende TomEE server in de projecten explorer worden geplaatst. Eclipse zal deze bij elke deployment in de /conf directory plaatsen.

Database resources

Hieronder staan de definities die in openejb.xml worden toegevoegd voor het gebruik van de HyperSQL en MySQL databases in de demo apps. Voor beide databases worden 2 verschillende opties geconfigureerd, één met JtaManaged=true en één met JtaManaged=false. De eerste is bedoeld voor container managed transacties. De tweede is bedoeld als de applicatie de transacties zelf managed.

<!--
Database Configuration for HyperSQL (HSQLDB) and MySQL
-->

<Resource id="employeedbh" type="DataSource">
  JdbcDriver org.hsqldb.jdbcDriver
  JdbcUrl jdbc:hsqldb:mem:employeedb
  UserName sa
  Password
  JtaManaged true
</Resource>

<Resource id="employeedbhNONJTA" type="DataSource">
  JdbcDriver org.hsqldb.jdbcDriver
  JdbcUrl jdbc:hsqldb:mem:employeedb
  UserName sa
  Password
  JtaManaged false
</Resource>

<Resource id="employeedb" type="DataSource">
  JdbcDriver com.mysql.jdbc.Driver
  JdbcUrl jdbc:mysql://localhost:3306/employeedb
  UserName root
  Password admin
  JtaManaged true
</Resource>

<Resource id="employeedbNONJTA" type="DataSource">
  JdbcDriver com.mysql.jdbc.Driver
  JdbcUrl jdbc:mysql://localhost:3306/employeedb
  UserName root
  Password admin
  JtaManaged false
</Resource>

JavaMail Resources

Hieronder staan de definities die in openejb.xml worden toegevoegd voor het gebruik van de JavaMail resources in de demo apps.

<!--
JavaMail Configuration
-->

<Resource id="GMailTLS" type="javax.mail.Session">
   mail.transport.protocol=smtp
   mail.smtp.host=smtp.gmail.com
   mail.smtp.port=587
   mail.smtp.starttls.enable=true
   mail.smtp.auth=true
   mail.smtp.user=joostvdschoot@gmail.com
   mail.smtp.password=mwwwjosjos
   mail.smtp.from=joostvdschoot@gmail.com
   debug=true
</Resource>

<Resource id="GMailSSL" type="javax.mail.Session">
   mail.transport.protocol=smtp;
   mail.smtp.host=smtp.gmail.com
   mail.smtp.port=465
   mail.smtp.socketFactory.port=465
   mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
   mail.smtp.auth=true
   mail.smtp.user=joostvdschoot@gmail.com
   mail.smtp.password=mwwwjosjos
   mail.smtp.from=joostvdschoot@gmail.com
   debug=true
</Resource>

JAAS Security Configuratie

Een aantal apps maken gebruik van JAAS security functionaliteit. Het betreft authenticatie en autorisatie. Daarvoor moet een Login Module worden geconfigureerd. De configuratie betreft een aantal bestanden en een security opstart optie :

  • Definitie van gebruikte login module in bestand “server.xml”
  • Specificatie van de login module in bestand “login.config”
  • TomEE Server Security opstart optie

Definitie SQLLoginModule in server.xml

Het server.xml bestand bevat algemene server configuratie data, en ook de definities van de gebruikte  JAAS security login component, in dit geval de “SQLLoginModule”. Een aantal apps maken gebruik van een custom login component die user/password authenticeert tegen gegevens in de user tabel in de database. The jdbc database toegang en de benodigde SQL om de user/password te kunnen lezen worden gedefinieerd in het login.config bestand (zie volgende paragraaf).

De locatie van dit bestand is de TomEE/TomCat installatie sub-directory : [TomEE Installdir]\conf. Als gebruik wordt gemaakt van opstart van TomEE binnen Eclipse dan kan dit bestand ook in de server map van de betreffende TomEE server in de projecten explorer worden geplaatst. Eclipse zal deze bij elke deployment in de /conf directory plaatsen.

Hieronder wordt getoond welke definities in server.xml moeten worden toegevoegd en waar dat in het bestand precies is.

<Engine defaultHost="localhost" name="Catalina">
     <Realm appName="SQLLoginModule" className="org.apache.catalina.realm.JAASRealm"
          roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal"
          userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal">
     </Realm>
</Engine>

Specificatie SQLLoginModule in login.config

Het login.config bestand bevat de configuratie van de JAAS security login component, in dit geval de “SQLLoginModule”. De naam van de login component is gedefinieerd in het server.xml  bestand (zie voorgaande paragraaf). Een aantal apps maken gebruik van een custom login component die user/password authenticeert tegen gegevens in de user tabel in de database. Het login.config bestand specificeert hoe de database jdbc access naar de database wordt verkregen middels de SQL code om de user en password uit de user tabel in de database te kunnen lezen.

De locatie van dit bestand is de TomEE/TomCat installatie sub-directory : [TomEE Installdir]\conf. Als gebruik wordt gemaakt van opstart van TomEE binnen Eclipse dan kan dit bestand ook in de server map van de betreffende TomEE server in de projecten explorer worden geplaatst. Eclipse zal deze bij elke deployment in de /conf directory plaatsen.

De inhoud van het bestand is  afhankelijk van de gebruikte on database. De onderstaande definitions vormen de inhoud van het login.config bestand voor de HyperSQL (HSQLDB) en MySQL databases.

login.config specificatie t.b.v. HSQLDB:

 SQLLoginModule {
 org.apache.openejb.core.security.jaas.SQLLoginModule required
 jdbcURL="jdbc:hsqldb:mem:employeedb"
 jdbcDriver="org.hsqldb.jdbcDriver"
 jdbcUser="sa"
 jdbcPassword=""
 userSelect="SELECT userName, password FROM user WHERE userName = ?"
 groupSelect="SELECT u.userName, r.name FROM user AS u, userrole AS ur, role AS r WHERE ur.userId = u.userId AND ur.roleId = r.roleId AND u.userName = ?;";
 };

login.config specificatie t.b.v. MySQL:

SQLLoginModule {
org.apache.openejb.core.security.jaas.SQLLoginModule required
jdbcURL="jdbc:mysql://localhost:3306/employeedb"
jdbcDriver="com.mysql.jdbc.Driver"
jdbcUser="username"
jdbcPassword="secret"
userSelect="SELECT userName, password FROM user WHERE userName = ?"
groupSelect="SELECT u.userName, r.name FROM user AS u, userrole AS ur, role AS r WHERE ur.userId = u.userId AND ur.roleId = r.roleId AND u.userName = ?;";
};

De usernaam en passwords moeten uiteraard worden aangepast. Voor de HSQLDB database is sa (or SA) zonder password default standaard.

Het login.config bestand wordt gespecificeerd als TomEE server startup optie zoals in de volgende paragraaf beschreven.

Tomee Security startup optie

De startup opties voor TomCat worden gedefinieerd in de omgevingsvariabele CATALINA_OPTS. Daaraan wordt de volgende optie toegevoegd:

-Djava.security.auth.login.config=$CATALINA_BASE/conf/login.

Dit kan worden gedaan in het catalina.sh (Linux) of catalina.bat (Windows) startup script. Dit script is te vinden in de /bin subdirectory onder de TomEE installatie root.
Het is ook mogelijk om dit in een apart script “setenv.bat”toe te voegen.

Als TomEE wordt gestart binnen Eclipse kan de optie worden toegevoegd aan de opstartparameters voor de TomEE server in Eclipse.

Open in Eclipse de Server configuration page.
Klik op de “Open Launch configuration” link.
Open tab “(x) = arguments”.
In de dialoog in het panel “VM Arguments” worden de startup parameters voor de TomEE server getoond. Er is zoiets te zien als hieronder:

-Dcatalina.base="C:\Opdrachten\JEE6\EclipseWorkspace32\.metadata\.plugins\org.eclipse.wst.server.core\tmp1"
-Dcatalina.home="C:\Tools\Java\apache-tomee-1.0.0-plus\apache-tomee-plus-1.0.0"
-Dwtp.deploy="C:\Opdrachten\JEE6\EclipseWorkspace32\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps"
-Djava.endorsed.dirs="C:\Tools\Java\apache-tomee-1.0.0-plus\apache-tomee-plus-1.0.0\endorsed"
-Djava.security.auth.login.config="C:\Opdrachten\JEE6\EclipseWorkspace32\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\conf\login.config"

De laatst getoonde optie is de toegevoegde optie om de login.conf file te configureren.

NB:

Wees voorzichtig met het definieren van de exacte locatie van het bestand.
In dit voorbeeld wordt de server gestart op basis van de local Eclipse configuratie files die zijn opgeslagen in de Eclipse workspace,  ergens in “\.metadata\.plugins\org.eclipse.wst.server.core\tmp……”.

This entry was posted in JEE Servers, Portfolio. Bookmark the permalink.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd.

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>