Kohei Nozaki's blog 

A quick workaround for list element issue of Roller5.1.0-SNAPSHOT mobile


Posted on Saturday May 17, 2014 at 03:36PM in Technology


I wrote a entry which uses list elements (ul, ol, li), and I got into some problem. so I leave this entry as a note of my solution.

I wrote some HTML as a content of a entry like this:

<ol>
  <li>element 1
  <li>element 2
  <ul>
    <li>nested element 1
    <li>nested element 2
  </ul>
</ol>

Then it showed in PC browsers as I expected like this:

List0

But, it showed in mobile version like this:

NewImage

all of list elements are disappeared. instead of list elements, the bottom of the entry became clickable. when I click the bottom, page transits to:

NewImage

I don't want this behavior, just want html lists to stay inline on the page. fortunately, I found a quick workaround of it that just copy template named "_day" of Standard to Mobile. 

  1. Go to blog settings
  2. Click design tab
  3. Click template
  4. Click "_day"
  5. Copy whole of template from "Standard"
  6. Click "Mobile" tab
  7. Paste the template
  8. Save

That's all. now mobile version looks like this:

NewImage


Install Apache Roller 5.1.0-SNAPSHOT to WildFly


Posted on Friday May 16, 2014 at 05:40PM in Technology


I installed Apache Roller 5.0.3 to WildFly at this article, but unfortunately it was so annoying procedure. Roller 5.0.3 comes with official installation guide to JBoss6, but it seems to be obsoleted for WildFly, so I had to such struggle to install Roller to WildFly.

But, I heard that from a developer of Roller, latest Roller and its installation guide is updated as compatible with newer JBoss version. also some problems at deploying to WildFly are fixed, so it became more easy to deploy to newer JBoss version, so I recommend latest Roller to who wants to use Roller with WildFly. The guide is fine and I guess that it's might be better to read it than this entry.

Environment

  • Apache Roller 5.1.0-SNAPSHOT
  • Apache Maven 3.1.1
  • WildFly 8.1.0.CR1
  • Oracle JDK8u5
  • PostgreSQL 9.2.4
  • OS X 10.9.3

Preconditions

  • Appropriate JDBC driver is already installed.

Procedures

  1. Checkout latest Apache Roller
    svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
    
  2. Build
    cd roller_trunk; mvn clean install
    

    The WAR file will be built at roller_trunk/app/target/roller.war

  3. Create a database (with psql)
    create database roller owner wildfly encoding 'UTF8' TEMPLATE template0;
    
  4. Create a DataSource (with jboss-cli)
    data-source add \
     --name=RollerDS \
     --driver-name=postgresql-9.3-1100.jdbc41.jar \
     --connection-url=jdbc:postgresql://localhost:5432/roller \
     --jndi-name=java:/RollerDS \
     --user-name=wildfly \
     --password=*** \
     --check-valid-connection-sql="SELECT 1" \
     --background-validation-millis=60000 \
     --validate-on-match=true \
     --jta=false
    
  5. Set default datasource
    /subsystem=jpa:write-attribute(name=default-datasource, value="java:/RollerDS")
    
  6. Create a JavaMail session
    /socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=RollerSMTP:add( \
    host=smtp.gmail.com, \
    port=465)
    
    /subsystem=mail/mail-session=RollerMail:add(jndi-name="java:/RollerMail", from="jane.doe@gmail.example.com", debug=true)
    
    /subsystem=mail/mail-session=RollerMail/server=smtp:add( \
    outbound-socket-binding-ref=RollerSMTP, \
    ssl=true, \
    username=jane.doe@gmail.example.com, \
    password=***)
    

    How to define a JavaMail session using CLI might be useful if you want further information about configuration of JavaMail session for WildFly.

  7. Create a directory at $WILDFLY_HOME/modules/org/apache/roller/configuration/main and put files below
    • module.xml
      <?xml version="1.0" encoding="UTF-8"?>
      <module xmlns="urn:jboss:module:1.1" name="org.apache.roller.configuration">
         <resources>
             <resource-root path="."/>
         </resources>
      </module> 
      
    • roller-custom.properties
      installation.type=auto
      
      mediafiles.storage.dir=/Users/kyle/tmp/roller510/rollerdata/mediafiles
      search.index.dir=/Users/kyle/tmp/roller510/rollerdata/searchindex
      log4j.appender.roller.File=/Users/kyle/tmp/roller510/rollerdata/roller.log
      
      database.configurationType=jndi
      database.jndi.name=java:/RollerDS
      mail.configurationType=jndi
      mail.jndi.name=java:/RollerMail
      
    • hibernate.cfg.xml
      <hibernate-configuration>
            <session-factory>
               <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>
            </session-factory>
      </hibernate-configuration>
      
  8. Restart wildfly
  9. Browse /roller of your application server and do some initializing process
  10. Set installation.type=manual in roller-custom.properties

Remarks

It works fine now, so I would try some customizing and posting with Roller.

I still seeing an error of JavaMail or something. I would investigate it later.

WARN  2014-05-16 16:01:39,233 WebloggerStartup:prepare - Failed to setup mail provider, continuing anyways.
Reason: ERROR connecting to mail server

References

  1. How to Build Roller


Install Apache Roller5


Posted on Thursday May 15, 2014 at 11:54AM in Technology


Environment

  • WildFly 8.1.0.CR1
  • Oracle JDK8u5
  • PostgreSQL 9.2.4
  • roller-weblogger-5.0.3-for-javaee.tar.gz
  • OS X 10.9.2

Preconditions

  • Ensure appropriate JDBC driver is installed to WildFly.

Create a database for Roller

postgres=# create database roller owner kyle encoding 'UTF8' TEMPLATE template0;
CREATE DATABASE
postgres=# 

Create a DataSource

  • Using jboss-cli.
data-source add \
 --name=RollerDS \
 --driver-name=postgresql \
 --connection-url=jdbc:postgresql://localhost:5432/roller \
 --jndi-name=java:jboss/jdbc/RollerDS \
 --user-name=postgres \
 --password=postgres \
 --jta=false \
 --use-java-context=false

Create the WAR with modified persistence.xml

Why need this?

  • Roller5 uses JPA, and defines its JNDI datasource name in persistence.xml as “jdbc/rollerdb”
  • But, WildFly doesn't allow such JNDI name. datasource creation will fail like this:
JBAS010471: Jndi name have to start with java:/ or java:jboss/
  • Also, Roller5 installation guide mentioned about installation procedure for JBoss6, but it seems obsoleted.
  • If possible, I recommend you to use other application servers like Tomcat or GlassFish at the moment because it needs many additional procedures to getting work with WildFly.

Extract the WAR

kyle-no-MacBook:tmp kyle$ pwd
/tmp
kyle-no-MacBook:tmp kyle$ mkdir roller
kyle-no-MacBook:tmp kyle$ cd roller
kyle-no-MacBook:roller kyle$ mkdir war
kyle-no-MacBook:roller kyle$ cd war
kyle-no-MacBook:war kyle$ jar xvf ~/Downloads/tmp/roller-weblogger-5.0.3-javaee/webapp/roller-5.0.3-javaee.war 

Extract roller-planet-business-5.0.3.jar

kyle-no-MacBook:war kyle$ cd ../
kyle-no-MacBook:roller kyle$ mkdir planet
kyle-no-MacBook:roller kyle$ cd planet
kyle-no-MacBook:planet kyle$ jar xvf ../war/WEB-INF/lib/roller-planet-business-5.0.3.jar

Modify persistence.xml inside roller-planet-business-5.0.3.jar

kyle-no-MacBook:planet kyle$ sed -i -e "s/jdbc\/rollerdb/java:jboss\/jdbc\/RollerDS/" META-INF/persistence.xml
  • Now, persistence.xml like this:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name ="PlanetPU" transaction-type = "RESOURCE_LOCAL"> 
        <non-jta-data-source>java:jboss/jdbc/RollerDS</non-jta-data-source>
        <mapping-file>org/apache/roller/planet/pojos/RuntimeConfigProperty.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/planet/pojos/Planet.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/planet/pojos/PlanetGroup.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/planet/pojos/Subscription.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/planet/pojos/SubscriptionEntry.orm.xml</mapping-file> 
    </persistence-unit>
</persistence>

Extract roller-weblogger-business-5.0.3.jar

kyle-no-MacBook:planet kyle$ cd ..
kyle-no-MacBook:roller kyle$ mkdir weblogger
kyle-no-MacBook:roller kyle$ cd weblogger/
kyle-no-MacBook:weblogger kyle$ jar xvf ../war/WEB-INF/lib/roller-weblogger-business-5.0.3.jar 

Modify persistence.xml inside roller-weblogger-business-5.0.3.jar

  • Replace JNDI name
kyle-no-MacBook:weblogger kyle$ sed -i -e "s/jdbc\/rollerdb/java:jboss\/jdbc\/RollerDS/" META-INF/persistence.xml
  • Add declaration of an additional property which enables bind EntityManagerFactory to JNDI. detail information: [3]
        <properties>
           <property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/jpa/RollerEMF" />
        </properties>
  • Also, trimming is needed.
kyle-no-MacBook:weblogger kyle$ sed -i -e "s/orm\.xml *</orm\.xml</g" META-INF/persistence.xml
  • If skip this, WildFly will complains like this and deployment fails:
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: RollerPU] Unable to resolve named mapping-file [org/apache/roller/weblogger/pojos/TaskLock.orm.xml                ]
  • Now, persistence.xml is:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name ="RollerPU" transaction-type="RESOURCE_LOCAL"> 
        <non-jta-data-source>java:jboss/jdbc/RollerDS</non-jta-data-source>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogBookmark.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogEntryComment.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogEntryAttribute.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogBookmarkFolder.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogHitCount.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/PingQueueEntry.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/PingTarget.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogReferrer.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/UserRole.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/RuntimeConfigProperty.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/TaskLock.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/User.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogCategory.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogEntry.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogEntryTagAggregate.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogEntryTag.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogTemplate.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/ObjectPermission.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/WeblogPermission.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/Weblog.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/UserAttribute.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/OAuthConsumerRecord.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/OAuthAccessorRecord.orm.xml</mapping-file>
        <mapping-file>org/apache/roller/weblogger/pojos/MediaFile.orm.xml</mapping-file>    
        <mapping-file>org/apache/roller/weblogger/pojos/MediaFileTag.orm.xml</mapping-file> 
        <mapping-file>org/apache/roller/weblogger/pojos/MediaFileDirectory.orm.xml</mapping-file>
        <class>org.apache.roller.weblogger.pojos.AutoPing</class>
        <properties>
           <property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/jpa/RollerEMF" />
        </properties>
    </persistence-unit>  
</persistence>

Create jars

kyle-no-MacBook:roller kyle$ cd planet/
kyle-no-MacBook:planet kyle$ jar cvf ../roller-planet-business-5.0.3-for-wildfly.jar .
kyle-no-MacBook:planet kyle$ cd ../weblogger/
kyle-no-MacBook:weblogger kyle$ jar cvf ../roller-weblogger-business-5.0.3-for-wildfly.jar .

Put jars into WEB-INF

kyle-no-MacBook:roller kyle$ pwd
/tmp/roller
kyle-no-MacBook:roller kyle$ cp roller-planet-business-5.0.3-for-wildfly.jar war/WEB-INF/lib/roller-planet-business-5.0.3.jar 
kyle-no-MacBook:roller kyle$ cp roller-weblogger-business-5.0.3-for-wildfly.jar war/WEB-INF/lib/roller-weblogger-business-5.0.3.jar 

Put jboss-web.xml into WEB-INF

  • Path:
kyle-no-MacBook:WEB-INF kyle$ pwd
/tmp/roller/war/WEB-INF
  • It goes like this:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <resource-ref>
        <res-ref-name>jdbc/rollerdb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:jboss/jdbc/RollerDS</jndi-name>
    </resource-ref>
    <resource-ref>
        <res-ref-name>jpa/rolleremf</res-ref-name>
        <res-type>javax.persistence.EntityManagerFactory</res-type>
        <jndi-name>java:jboss/jpa/RollerEMF</jndi-name>
    </resource-ref>
    <resource-ref>
        <res-ref-name>mail/Session</res-ref-name>
        <res-type>javax.mail.Session</res-type>
        <jndi-name>java:/mail/myMail</jndi-name>
    </resource-ref>
</jboss-web>

Put roller-custom.properties into WEB-INF/classes

  • Path:
kyle-no-MacBook:classes kyle$ pwd
/tmp/roller/war/WEB-INF/classes
  • It goes like this:
jpa.configurationType=jndi
jpa.emf.jndi.name=jpa/rolleremf
installation.type=auto
mediafiles.storage.dir=/Users/kyle/tmp/rollerdata/mediafiles
search.index.dir=/Users/kyle/tmp/rollerdata/searchindex
log4j.appender.roller.File=/Users/kyle/tmp/rollerdata/roller.log
database.jndi.name=java:jboss/jdbc/RollerDS

Create the WAR

kyle-no-MacBook:roller kyle$ pwd
/tmp/roller
kyle-no-MacBook:roller kyle$ cd war
kyle-no-MacBook:war kyle$ jar cvf ../roller.war .

Deploy

cp roller.war ~/apps/wildfly/standalone/deployments
  • It goes like this:
2014-05-15 14:25:17,648 TRACE [org.hibernate.type.TypeFactory] (ServerService Thread Pool -- 311) Scoping types to session factory org.hibernate.internal.SessionFactoryImpl@5fcdf39a
2014-05-15 14:25:17,842 TRACE [org.hibernate.type.TypeFactory] (ServerService Thread Pool -- 310) Scoping types to session factory org.hibernate.internal.SessionFactoryImpl@745bcb72
2014-05-15 14:25:18,626 INFO  [org.apache.roller.weblogger.business.DatabaseProvider] (MSC service thread 1-3) SUCCESS: Got parameters. Using configuration type JNDI_NAME
2014-05-15 14:25:18,626 INFO  [org.apache.roller.weblogger.business.DatabaseProvider] (MSC service thread 1-3) -- Using JNDI datasource name: java:jboss/jdbc/RollerDS
2014-05-15 14:25:18,627 INFO  [org.apache.roller.weblogger.business.DatabaseProvider] (MSC service thread 1-3) SUCCESS: located JNDI DataSource [java:jboss/jdbc/RollerDS]
2014-05-15 14:25:19,998 INFO  [org.apache.roller.weblogger.ui.core.RollerContext] (MSC service thread 1-3) 
--------------------------------------------------------------
Roller Weblogger startup INCOMPLETE, user interaction required
--------------------------------------------------------------
2014-05-15 14:25:19,999 INFO  [org.apache.roller.weblogger.ui.core.RollerContext] (MSC service thread 1-3) Remember Me enabled: true
2014-05-15 14:25:20,000 INFO  [org.apache.roller.weblogger.ui.core.RollerContext] (MSC service thread 1-3) Password Encryption Algorithm set to 'SHA'
2014-05-15 14:25:20,000 INFO  [org.apache.roller.weblogger.ui.core.RollerContext] (MSC service thread 1-3) Initializing Velocity
2014-05-15 14:25:20,136 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.SearchServlet] (MSC service thread 1-3) Initializing SearchServlet
2014-05-15 14:25:20,136 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.FeedServlet] (MSC service thread 1-3) Initializing FeedServlet
2014-05-15 14:25:20,137 INFO  [org.apache.roller.weblogger.ui.rendering.util.cache.WeblogFeedCache] (MSC service thread 1-3) {size=200, id=cache.weblogfeed, timeout=3600, enabled=true}
2014-05-15 14:25:20,139 INFO  [org.apache.roller.weblogger.util.cache.CacheManager] (MSC service thread 1-3) Cache Manager Initialized.
2014-05-15 14:25:20,139 INFO  [org.apache.roller.weblogger.util.cache.CacheManager] (MSC service thread 1-3) Cache Factory = org.apache.roller.weblogger.util.cache.ExpiringLRUCacheFactoryImpl
2014-05-15 14:25:20,142 INFO  [org.apache.roller.weblogger.ui.rendering.util.cache.SiteWideCache] (MSC service thread 1-3) {size=50, id=cache.sitewide, enabled=true, timeout=1800}
2014-05-15 14:25:20,142 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.ResourceServlet] (MSC service thread 1-3) Initializing ResourceServlet
2014-05-15 14:25:20,142 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PageServlet] (MSC service thread 1-3) Initializing PageServlet
2014-05-15 14:25:20,143 INFO  [org.apache.roller.weblogger.ui.rendering.util.cache.WeblogPageCache] (MSC service thread 1-3) {size=400, id=cache.weblogpage, enabled=true, timeout=3600}
2014-05-15 14:25:20,143 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PageServlet] (MSC service thread 1-3) Referrer processing enabled = true
2014-05-15 14:25:20,143 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.MediaResourceServlet] (MSC service thread 1-3) Initializing ResourceServlet
2014-05-15 14:25:20,144 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.CommentServlet] (MSC service thread 1-3) Initializing CommentServlet
2014-05-15 14:25:20,153 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: ブラックリストコメント排除 / org.apache.roller.weblogger.ui.rendering.plugins.comments.BlacklistCommentValidator
2014-05-15 14:25:20,154 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: 多すぎるリンクが入ったコメントバリケーダ / org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessLinksCommentValidator
2014-05-15 14:25:20,154 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: コメントバリケーダ / org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessSizeCommentValidator
2014-05-15 14:25:20,155 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured 3 CommentValidators
2014-05-15 14:25:20,155 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.CommentServlet] (MSC service thread 1-3) Comment Throttling DISABLED
2014-05-15 14:25:20,155 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PlanetFeedServlet] (MSC service thread 1-3) Initializing PlanetRssServlet
2014-05-15 14:25:20,156 INFO  [org.apache.roller.weblogger.ui.rendering.util.cache.PlanetCache] (MSC service thread 1-3) Planet cache = {size=10, id=cache.planet, timeout=1800, enabled=true}
2014-05-15 14:25:20,156 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.RSDServlet] (MSC service thread 1-3) Initializing RSDServlet
2014-05-15 14:25:20,157 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: ブラックリストコメント排除 / org.apache.roller.weblogger.ui.rendering.plugins.comments.BlacklistCommentValidator
2014-05-15 14:25:20,157 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: 多すぎるリンクが入ったコメントバリケーダ / org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessLinksCommentValidator
2014-05-15 14:25:20,158 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured CommentValidator: コメントバリケーダ / org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessSizeCommentValidator
2014-05-15 14:25:20,158 INFO  [org.apache.roller.weblogger.ui.rendering.plugins.comments.CommentValidationManager] (MSC service thread 1-3) Configured 3 CommentValidators
2014-05-15 14:25:20,159 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PreviewServlet] (MSC service thread 1-3) Initializing PreviewServlet
2014-05-15 14:25:20,160 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PreviewThemeImageServlet] (MSC service thread 1-3) Initializing PreviewThemeImageServlet
2014-05-15 14:25:20,160 INFO  [org.apache.roller.weblogger.ui.rendering.servlets.PreviewResourceServlet] (MSC service thread 1-3) Initializing PreviewResourceServlet

Access to the page

  • Finally the top page is shown!

  • The button triggers schema creation.

roller=# \d
                  List of relations
 Schema |           Name           | Type  |  Owner   
--------+--------------------------+-------+----------
 public | autoping                 | table | postgres
 public | bookmark                 | table | postgres
 public | entryattribute           | table | postgres
...
  • Finally I saw the welcome page!

Don't forget: Reset the installation.type flag

  • Roller installation guide said:

Now that you're done with the installation you should turn off Roller's auto-installation system. Edit your roller-custom.properties file and set installation.type=manual. Then restart your server or Roller so that it accepts the new setting.

  • So, you need to edit the roller-custom.properties and re-deploy.

References

  1. Why not java:global/datasources? | Community
  2. Roller 5 and JBoss 6
  3. Binding EntityManagerFactory/EntityManager to JNDI
  4. Une tasse de cafe
  5. Apache Roller: TJシステム設計