I thought I would put together a summary of the changes for our spec leads to comment on to help solicit feedback on the JSR-348 JCP v2.8 public draft. These changes are relative to the current JCP2 Document, v2.7 (May 15 2009). The headings below are from the v2.8 JCP public review document, and terms in bold are from the v2.8 Definitions section.

 

Note that the JSR-348 public review ends on Sep 6, 2011, so make sure you have your comments recorded either view the mailing list, or issue tracker by then.

I Executive Summary

The two ECs representing the embedded and server spaces will likely be collapsed into one.

 

 

The four steps of a JSR are slightly tweaked to have step 2 be "Draft Releases" vs the v2.7 "Early Draft" phase to emphasize that any number of drafts can be put out to encourage feedback from the community. Step 3, "Final Release" vs the v2.7 "Public Draft" phase clarifies how a draft becomes the final proposal and requirement for an TCK and RI that passes the TCK. This emphasizes that the RI and TCK must be completed before the final draft can be submitted to the EC for approval.

 

 

II Definitions

The section covering definitions of terms used in the process document have been greatly expanded by pulling in all of the definitions spread through the v2.7 process document into one section.

 

 

1.1 EXPERT GROUP TRANSPARENCY

Having a JSR EG work in a completely transparent manner is a major focus of this v2.8 rev of the JCP. While the v2.7 rev did encourage transparency, it was not required. In v2.8, EGs must operate in a transparent with public channels with public responses to all input. How this will be accomplished must be specified in the JSR submission.

 

 

1.1.1 MAILING LISTS

All substantive business must be carried out on a public mailing list in the v2.8 process. This was only encouraged in v2.7.

 

 

1.1.2 ISSUE TRACKING

Issues must be track through a publicly readable issue tracking mechanism in the v2.8 process, with all formal comments entered as issues, and all issues must be publicly responded to before a JSR can go on to the next phase. There was no requirement for issue tracking in v2.7.

 

 

1.1.3 CHANGES TO LICENSING TERMS

There are stronger requirements to maintain the initial RI and TCK licensing terms. If a change to the RI and TCK is approved, the original licensing terms published at the time of Final Release must continue to be offered.

 

 

1.2.2 DISRUPTIVE, UNCOOPERATIVE OR UNRESPONSIVE EXPERT GROUP MEMBERS

The process for dealing with EG members that are not contributing has been simplified and strengthened. Any three members of the EG can approach the Spec Lead and request that the EG member in question be excluded from further participation in the EG. If the Spec Lead agrees to the request he can then do so.

 

 

1.2.3 UNRESPONSIVE OR INACTIVE SPEC LEAD

New to the v2.8 process document is the notion of an unresponsive spec lead and the process by which they may be replaced.

 

 

1.3 JSR Deadlines

A number of deadlines from the initial JSR Approval Ballot (JSR Approval) have been introduced to ensure a JSR proceeds at reasonable pace through the various phase. A JSR must:

  • begin Early Draft Review within the first 12 months
  • begin Public Review within 2 years
  • achieve Final Release within 3 years

 

otherwise, the EC should initiate a JSR Renewal Ballot unless it is agreed that there are extraordinary circumstances that justify the delay.

 

1.4 COMPATIBILITY TESTING

The Spec Lead is responsible for defining the process whereby the TCK is used to certify implementations of the JSR as compatible. The Maintenance Lead must submit to the PMO at least quarterly, and at every Maintenance Release, a list of all implementations that have been certified as compatible and that have been released publicly or commercially.  If the Spec Lead submits the information in the form of a pointer to an already published list the PMO may choose simply to reference that list rather than duplicate it.

 

 

TCK license terms must permit implementors to freely and publicly discuss the testing process and detailed TCK test results with all interested parties.

 

 

1.7 ESCALATION AND APPEALS

v2.8 introduces an escalation/appeals process where any EG member can appeal to the EC regarding a decision, an action or inaction by the PMO, a Spec Lead, or a Maintenance Lead that affects EG participation or issue-resolution and which cannot be resolved by other reasonable means.

 

 

3.1 WRITE THE FIRST DRAFT OF THE SPECIFICATION

3.2 EARLY DRAFT REVIEW

This is largely the same between v2.8 and v2.7, but there is an emphasis on the fact that multiple iterations of the Early Draft/Early Draft Review phases can be utilized if an EG believes that would be helpful.

 

 

4.1.2 ESTABLISH A FIRST-LEVEL TCK APPEALS PROCESS

This is the same as in v2.7, but the reference to a full TCK appeals process has been dropped in favor of a simplified description of how to escalate the appeal to the PMO and EC, which may trigger a TCK Appeal Ballot.

 

 

4.1.3 UPDATE THE DELIVERABLES IN RESPONSE TO THE APPEAL BALLOT

v2.8 includes a section on the need to update one or more of the TCK, the Specification, or the RI. Within one month of the close of a successful TCK Appeal Ballot the Maintenance Lead must update these deliverables as necessary and record the changes in the relevant sections of the Change Log.

 

 

4.2 FINAL APPROVAL BALLOT

v2.8 unifies the complete TCK compatible implementations requirments by including the following conditions from the JSPA:

 

  a) fully implement the Spec(s) including all required interfaces and functionality, and

  b) do not modify, subset, superset, or otherwise extend the Licensor Name Space, or include any public or

          protected packages, classes, Java interfaces, fields or methods within the Licensor Name Space other

          than those required/authorized by the Spec or Specs being implemented.

 

and, requires that in addition to 100% signature test coverage, no non-specified APIs are included in the JSR's namespace.

 

 

4.3 FINAL RELEASE

v2.8 add the requirement that a means to obtain the TCK documentation at no charge must be published. Further, a requirement to maintain the links to the RI and TCK must remain valid through the life of the JSR, or the JSR is subject to reversion back to the Proposed Final Draft or Maintenance Review stage as appropriate, and would have complete the Final Release or Maintenance Release process again.

 

 

5.2 MAINTENANCE REVIEW

v2.8 has simplified the maintenance process, which now requires the use of an issue tracker to gather items for consideration for inclusion in the revision.

 

 

6.3 EC DUTIES AND RESPONSIBILITIES

v2.8 expands the v2.7 EC duties in 3 areas:

- Review and provide guidance on proposed licensing terms of proposed JSRs.

- Ensure that publicly expressed issues/concerns with a JSR are addressed by the Expert Group.

- Decide when JSRs that have not made sufficient progress through the Process should be withdrawn.

The first of two rounds (or maybe three) of revision of the Java Community Process specifications is reaching it's first public draft review stage this Friday at midnight. Head over to the JCP page for JSR348 to view the draft. There are only 30 days until voting to approve the draft concludes, so you should have your comments in within the first 2-3 weeks to have the most impact.

 

The JSR348 project page is located at java.net, and there you can find links to the JSR348 Issues tracker, and mailing lists and archives.

 

Note that the scope of this initial revision is limited to what are deemed non-controversial, so you should browse the list of issues deferred until phase 2, read the public draft, review the various discussion mailing lists, and then raise an issue to make your voice heard.

 

If you feel there is something you would like to raise or comment on, but aren't sure you want to do that yourself, drop me a message with your comments and I'll see if I can be your advocate.

 

Scott Stark

sstark@redhat.com

When you create an Express application, you have some buried treasure in the application git repsository that is created. If you look under the .openshift directory, you will see the following:

 

[18](ironmaiden:seamrocks) > ls -lR .openshift/
total 0
drwxr-xr-x  3 starksm  wheel  102 Aug 11 11:41 action_hooks
drwxr-xr-x  3 starksm  wheel  102 Aug 11 11:41 config
drwxr-xr-x  3 starksm  wheel  102 Aug 11 11:41 markers


.openshift//action_hooks:
total 8
-rwxr-xr-x  1 starksm  wheel  187 Aug 11 11:41 build


.openshift//config:
total 24
-rw-r--r--  1 starksm  wheel  9488 Aug 11 11:41 standalone.xml


.openshift//markers:
total 8
-rw-r--r--  1 starksm  wheel  422 Aug 11 11:41 README

 

  • .openshift/action_hooks/build
    • This is a script that is run after the deployment has been built, but before the server has been restarted.
  • .openshift/config/standalone.xml
    • This is the standalone.xml that will be run by the jbossas7 server instance associated with your application. You can change things like logging levels and other basic settings, but don't go wild because the server runs under restrictions.
  • .openshift/markers
    • Adding marker files to this directory will have the following effects:

      • skip_maven_build - Maven build step will be skipped

      • skip_maven_build_keep - Maven build step will be skipped and the previous output in deployments (excluding what is git pushed) will be left intact from the previous build.  Applies as long as skip_maven_build_keep is present plus one git push after it is removed.

 

In the future we will be looking to expose additional functionality like being able to extend the modules used by the server.

Since you don't have access to your server installation on the OpenShift Express box you happen to be running your app in the cloud on, it would be nice if there was a way to pull down the various log files from the JBossAS7 server. There is using the rhc-tail-files client tools command. For example, as part of going through Matt's blog on getting a Seam app running in the cloud, I wanted to see how the server logs evolved over the course of pushing out the seam application. I did this be running the following command after creating the seamsrocks application, but before doing the git push. The resulting command output shows the original logs as well as how the evolve as the server is restarted with the updated application.

 

[54](ironmaiden:tmp) > rhc-tail-files -o '-n 5000' -a seamrocks -p *
Contacting https://openshift.redhat.com
Attempting to tail files: seamrocks/logs/*
Use ctl + c to stop


==> seamrocks/logs/boot.log <==
14:41:17,500 INFO  [org.jboss.modules] JBoss Modules version 1.0.1.GA
14:41:17,785 INFO  [org.jboss.msc] JBoss MSC version 1.0.0.GA
14:41:17,834 INFO  [org.jboss.as] JBoss AS 7.0.0.Final "Lightning" starting
14:41:17,836 DEBUG [org.jboss.as.config] Configured system properties:
          file.encoding = UTF-8
          file.encoding.pkg = sun.io
          file.separator = /
          java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
          java.awt.printerjob = sun.print.PSPrinterJob
          java.class.path = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/jboss-modules.jar
          java.class.version = 50.0
          java.endorsed.dirs = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/endorsed
          java.ext.dirs = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
          java.home = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
          java.io.tmpdir = /tmp
          java.library.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
          java.runtime.name = OpenJDK Runtime Environment
          java.runtime.version = 1.6.0_20-b20
          java.specification.name = Java Platform API Specification
          java.specification.vendor = Sun Microsystems Inc.
          java.specification.version = 1.6
          java.util.logging.manager = org.jboss.logmanager.LogManager
          java.vendor = Sun Microsystems Inc.
          java.vendor.url = http://java.sun.com/
          java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
          java.version = 1.6.0_20
          java.vm.info = mixed mode
          java.vm.name = OpenJDK 64-Bit Server VM
          java.vm.specification.name = Java Virtual Machine Specification
          java.vm.specification.vendor = Sun Microsystems Inc.
          java.vm.specification.version = 1.0
          java.vm.vendor = Sun Microsystems Inc.
          java.vm.version = 19.0-b09
          javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory
          javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory
          javax.xml.parsers.SAXParserFactory = __redirected.__SAXParserFactory
          javax.xml.stream.XMLEventFactory = __redirected.__XMLEventFactory
          javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory
          javax.xml.stream.XMLOutputFactory = __redirected.__XMLOutputFactory
          javax.xml.transform.TransformerFactory = __redirected.__TransformerFactory
          javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema = __redirected.__SchemaFactory
          javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory
          jboss.home.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0
          jboss.host.name = ex-node11
          jboss.modules.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/modules
          jboss.node.name = ex-node11
          jboss.qualified.host.name = ex-node11.prod.rhcloud.com
          jboss.server.base.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone
          jboss.server.config.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/configuration
          jboss.server.data.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/data
          jboss.server.deploy.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/data/content
          jboss.server.log.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/log
          jboss.server.name = ex-node11
          jboss.server.temp.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/tmp
          line.separator = 


          logging.configuration = file:/var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/configuration/logging.properties
          module.path = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/modules
          org.jboss.boot.log.file = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/log/boot.log
          org.jboss.resolver.warning = true
          org.xml.sax.driver = __redirected.__XMLReaderFactory
          os.arch = amd64
          os.name = Linux
          os.version = 2.6.32-131.4.1.el6.x86_64
          path.separator = :
          sun.arch.data.model = 64
          sun.boot.class.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/netx.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/plugin.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rhino.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/classes
          sun.boot.library.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64
          sun.cpu.endian = little
          sun.cpu.isalist = 
          sun.io.unicode.encoding = UnicodeLittle
          sun.java.launcher = SUN_STANDARD
          sun.jnu.encoding = UTF-8
          sun.management.compiler = HotSpot 64-Bit Server Compiler
          sun.os.patch.level = unknown
          sun.rmi.dgc.client.gcInterval = 3600000
          sun.rmi.dgc.server.gcInterval = 3600000
          user.country = US
          user.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks
          user.home = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f
          user.language = en
          user.name = eb673a8e363d46bfb0a7135b8ac7e65f
          user.timezone = America/New_York
14:41:18,690 INFO  [org.jboss.as.logging] Removing bootstrap log handlers


==> seamrocks/logs/server.log <==
14:41:18,706 INFO  [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
14:41:18,712 INFO  [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
14:41:18,732 INFO  [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
14:41:18,860 INFO  [org.jboss.as.naming] (Controller Boot Thread) Activating Naming Subsystem
14:41:18,877 INFO  [org.jboss.as.naming] (MSC service thread 1-1) Starting Naming Service 
14:41:18,878 INFO  [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
14:41:19,145 INFO  [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-2) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
14:41:19,228 INFO  [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
14:41:19,246 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http--127.1.49.1-8080
14:41:19,348 INFO  [org.jboss.as.connector] (MSC service thread 1-2) Starting JCA Subsystem (JBoss IronJacamar 1.0.0.CR2)
14:41:19,382 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source [java:jboss/datasources/ExampleDS]
14:41:19,878 INFO  [org.jboss.as.deployment] (MSC service thread 1-2) Started FileSystemDeploymentService for directory /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/deployments
14:41:19,900 INFO  [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.Final "Lightning" started in 2708ms - Started 84 of 109 services (22 services are passive or on-demand)
14:41:19,956 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "ROOT.war"
14:41:20,328 INFO  [org.jboss.web] (MSC service thread 1-2) registering web context: 
14:41:20,378 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "ROOT.war"


==> seamrocks/logs/boot.log <==
14:47:38,067 INFO  [org.jboss.as.logging] Restored bootstrap log handlers
14:47:38,087 INFO  [com.arjuna.ats.jbossatx] ARJUNA32018: Destroying TransactionManagerService
14:47:38,088 INFO  [com.arjuna.ats.jbossatx] ARJUNA32014: Stopping transaction recovery manager
14:47:38,093 INFO  [org.jboss.as.server.deployment] Stopped deployment ROOT.war in 62ms
14:47:38,095 INFO  [org.jboss.as] JBoss AS 7.0.0.Final "Lightning" stopped in 60ms
/usr/bin/tail: seamrocks/logs/boot.log: file truncated
14:53:46,728 INFO  [org.jboss.modules] JBoss Modules version 1.0.1.GA
14:53:47,030 INFO  [org.jboss.msc] JBoss MSC version 1.0.0.GA
14:53:47,099 INFO  [org.jboss.as] JBoss AS 7.0.0.Final "Lightning" starting
14:53:47,101 DEBUG [org.jboss.as.config] Configured system properties:
          file.encoding = ANSI_X3.4-1968
          file.encoding.pkg = sun.io
          file.separator = /
          java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
          java.awt.printerjob = sun.print.PSPrinterJob
          java.class.path = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/jboss-modules.jar
          java.class.version = 50.0
          java.endorsed.dirs = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/endorsed
          java.ext.dirs = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/ext:/usr/java/packages/lib/ext
          java.home = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
          java.io.tmpdir = /tmp
          java.library.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
          java.runtime.name = OpenJDK Runtime Environment
          java.runtime.version = 1.6.0_20-b20
          java.specification.name = Java Platform API Specification
          java.specification.vendor = Sun Microsystems Inc.
          java.specification.version = 1.6
          java.util.logging.manager = org.jboss.logmanager.LogManager
          java.vendor = Sun Microsystems Inc.
          java.vendor.url = http://java.sun.com/
          java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgi
          java.version = 1.6.0_20
          java.vm.info = mixed mode
          java.vm.name = OpenJDK 64-Bit Server VM
          java.vm.specification.name = Java Virtual Machine Specification
          java.vm.specification.vendor = Sun Microsystems Inc.
          java.vm.specification.version = 1.0
          java.vm.vendor = Sun Microsystems Inc.
          java.vm.version = 19.0-b09
          javax.xml.datatype.DatatypeFactory = __redirected.__DatatypeFactory
          javax.xml.parsers.DocumentBuilderFactory = __redirected.__DocumentBuilderFactory
          javax.xml.parsers.SAXParserFactory = __redirected.__SAXParserFactory
          javax.xml.stream.XMLEventFactory = __redirected.__XMLEventFactory
          javax.xml.stream.XMLInputFactory = __redirected.__XMLInputFactory
          javax.xml.stream.XMLOutputFactory = __redirected.__XMLOutputFactory
          javax.xml.transform.TransformerFactory = __redirected.__TransformerFactory
          javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema = __redirected.__SchemaFactory
          javax.xml.xpath.XPathFactory:http://java.sun.com/jaxp/xpath/dom = __redirected.__XPathFactory
          jboss.home.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0
          jboss.host.name = ex-node11
          jboss.modules.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/modules
          jboss.node.name = ex-node11
          jboss.qualified.host.name = ex-node11.prod.rhcloud.com
          jboss.server.base.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone
          jboss.server.config.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/configuration
          jboss.server.data.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/data
          jboss.server.deploy.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/data/content
          jboss.server.log.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/log
          jboss.server.name = ex-node11
          jboss.server.temp.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/tmp
          line.separator = 


          logging.configuration = file:/var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/configuration/logging.properties
          module.path = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/modules
          org.jboss.boot.log.file = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/log/boot.log
          org.jboss.resolver.warning = true
          org.xml.sax.driver = __redirected.__XMLReaderFactory
          os.arch = amd64
          os.name = Linux
          os.version = 2.6.32-131.4.1.el6.x86_64
          path.separator = :
          sun.arch.data.model = 64
          sun.boot.class.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/resources.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rt.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jsse.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/jce.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/netx.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/plugin.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/rhino.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/modules/jdk.boot.jar:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/classes
          sun.boot.library.path = /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64
          sun.cpu.endian = little
          sun.cpu.isalist = 
          sun.io.unicode.encoding = UnicodeLittle
          sun.java.launcher = SUN_STANDARD
          sun.jnu.encoding = ANSI_X3.4-1968
          sun.management.compiler = HotSpot 64-Bit Server Compiler
          sun.os.patch.level = unknown
          sun.rmi.dgc.client.gcInterval = 3600000
          sun.rmi.dgc.server.gcInterval = 3600000
          user.country = US
          user.dir = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/git/seamrocks.git
          user.home = /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f
          user.language = en
          user.name = eb673a8e363d46bfb0a7135b8ac7e65f
          user.timezone = America/New_York
/usr/bin/tail: seamrocks/logs/server.log: file truncated


==> seamrocks/logs/boot.log <==
14:53:47,974 INFO  [org.jboss.as.logging] Removing bootstrap log handlers


==> seamrocks/logs/server.log <==
14:53:47,998 INFO  [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
14:53:48,004 INFO  [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
14:53:48,013 INFO  [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
14:53:48,138 INFO  [org.jboss.as.naming] (Controller Boot Thread) Activating Naming Subsystem
14:53:48,147 INFO  [org.jboss.as.naming] (MSC service thread 1-1) Starting Naming Service 
14:53:48,160 INFO  [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
14:53:48,393 INFO  [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-2) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64:/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
14:53:48,408 INFO  [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
14:53:48,493 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http--127.1.49.1-8080
14:53:48,631 INFO  [org.jboss.as.connector] (MSC service thread 1-1) Starting JCA Subsystem (JBoss IronJacamar 1.0.0.CR2)
14:53:48,709 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source [java:jboss/datasources/ExampleDS]
14:53:49,109 INFO  [org.jboss.as.deployment] (MSC service thread 1-2) Started FileSystemDeploymentService for directory /var/lib/libra/eb673a8e363d46bfb0a7135b8ac7e65f/seamrocks/jbossas-7.0/standalone/deployments
14:53:49,152 INFO  [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.Final "Lightning" started in 2752ms - Started 84 of 109 services (22 services are passive or on-demand)
14:53:49,170 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "ROOT.war"
14:53:50,623 INFO  [org.jboss.jpa] (MSC service thread 1-2) read persistence.xml for booking
14:53:50,818 INFO  [org.jboss.weld] (MSC service thread 1-1) Processing CDI deployment: ROOT.war
14:53:50,890 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named BookingAgent in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/BookingAgent!org.jboss.seam.examples.booking.booking.BookingAgent
          java:app/ROOT/BookingAgent!org.jboss.seam.examples.booking.booking.BookingAgent
          java:module/BookingAgent!org.jboss.seam.examples.booking.booking.BookingAgent
          java:global/ROOT/BookingAgent
          java:app/ROOT/BookingAgent
          java:module/BookingAgent


14:53:50,890 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named BookingAuthenticator in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/BookingAuthenticator!org.jboss.seam.security.Authenticator
          java:app/ROOT/BookingAuthenticator!org.jboss.seam.security.Authenticator
          java:module/BookingAuthenticator!org.jboss.seam.security.Authenticator
          java:global/ROOT/BookingAuthenticator
          java:app/ROOT/BookingAuthenticator
          java:module/BookingAuthenticator


14:53:50,890 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named CurrentUserManager in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/CurrentUserManager!org.jboss.seam.examples.booking.account.CurrentUserManager
          java:app/ROOT/CurrentUserManager!org.jboss.seam.examples.booking.account.CurrentUserManager
          java:module/CurrentUserManager!org.jboss.seam.examples.booking.account.CurrentUserManager
          java:global/ROOT/CurrentUserManager
          java:app/ROOT/CurrentUserManager
          java:module/CurrentUserManager


14:53:50,891 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named BookingHistory in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/BookingHistory!org.jboss.seam.examples.booking.booking.BookingHistory
          java:app/ROOT/BookingHistory!org.jboss.seam.examples.booking.booking.BookingHistory
          java:module/BookingHistory!org.jboss.seam.examples.booking.booking.BookingHistory
          java:global/ROOT/BookingHistory
          java:app/ROOT/BookingHistory
          java:module/BookingHistory


14:53:50,891 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named HotelSearch in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/HotelSearch!org.jboss.seam.examples.booking.inventory.HotelSearch
          java:app/ROOT/HotelSearch!org.jboss.seam.examples.booking.inventory.HotelSearch
          java:module/HotelSearch!org.jboss.seam.examples.booking.inventory.HotelSearch
          java:global/ROOT/HotelSearch
          java:app/ROOT/HotelSearch
          java:module/HotelSearch


14:53:50,891 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named PasswordManager in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/PasswordManager!org.jboss.seam.examples.booking.account.PasswordManager
          java:app/ROOT/PasswordManager!org.jboss.seam.examples.booking.account.PasswordManager
          java:module/PasswordManager!org.jboss.seam.examples.booking.account.PasswordManager
          java:global/ROOT/PasswordManager
          java:app/ROOT/PasswordManager
          java:module/PasswordManager


14:53:50,891 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named Registrar in deployment unit deployment "ROOT.war" are as follows:


          java:global/ROOT/Registrar!org.jboss.seam.examples.booking.account.Registrar
          java:app/ROOT/Registrar!org.jboss.seam.examples.booking.account.Registrar
          java:module/Registrar!org.jboss.seam.examples.booking.account.Registrar
          java:global/ROOT/Registrar
          java:app/ROOT/Registrar
          java:module/Registrar


14:53:51,409 INFO  [org.jboss.weld] (MSC service thread 1-1) Starting Services for CDI deployment: ROOT.war
14:53:51,457 INFO  [org.jboss.weld.Version] (MSC service thread 1-1) WELD-000900 1.1.2 (AS7)
14:53:51,521 INFO  [org.jboss.jpa] (MSC service thread 1-1) starting Persistence Unit Service 'ROOT.war#booking' 
14:53:51,578 INFO  [org.jboss.weld] (MSC service thread 1-2) Starting weld service
14:53:51,706 INFO  [org.hibernate.annotations.common.Version] (MSC service thread 1-1) Hibernate Commons Annotations 3.2.0.Final
14:53:51,710 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-1) HHH00412:Hibernate [WORKING]
14:53:51,711 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-1) HHH00206:hibernate.properties not found
14:53:51,713 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-1) HHH00021:Bytecode provider name : javassist
14:53:51,733 INFO  [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-1) HHH00204:Processing PersistenceUnitInfo [
          name: booking
          ...]
14:53:51,799 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.bootstrap
14:53:51,799 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.account
14:53:51,799 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.booking
14:53:51,800 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.exceptioncontrol
14:53:51,800 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.reference
14:53:51,800 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.model
14:53:51,801 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.log
14:53:51,801 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.security
14:53:51,801 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.i18n
14:53:51,802 WARN  [org.hibernate.cfg.AnnotationBinder] (MSC service thread 1-1) HHH00194:Package not found or wo package-info.java: org.jboss.seam.examples.booking.inventory
14:53:51,937 INFO  [org.jboss.seam.solder.Version] (MSC service thread 1-2) Seam Solder null (build id: null)
14:53:51,956 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Seam Config XML provider starting...
14:53:51,958 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Loading XmlDocumentProvider: org.jboss.seam.config.xml.bootstrap.ResourceLoaderXmlDocumentProvider
14:53:51,962 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/classes/META-INF/seam-beans.xml
14:53:52,035 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-international-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,047 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-security-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,048 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-servlet-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,049 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-solder-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,050 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-faces-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,051 INFO  [org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator] (MSC service thread 1-1) HHH00130:Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
14:53:52,077 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Reading XML file: vfs:/content/ROOT.war/WEB-INF/lib/seam-catch-3.0.0.Final.jar/META-INF/beans.xml
14:53:52,090 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Adding XML Defined Bean: org.jboss.seam.security.IdentityImpl
14:53:52,417 INFO  [org.hibernate.dialect.Dialect] (MSC service thread 1-1) HHH00400:Using dialect: org.hibernate.dialect.HSQLDialect
14:53:52,433 INFO  [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (MSC service thread 1-1) HHH00423:Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
14:53:52,439 INFO  [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (MSC service thread 1-1) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory
14:53:52,442 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (MSC service thread 1-1) HHH00397:Using ASTQueryTranslatorFactory
14:53:52,479 INFO  [org.hibernate.validator.util.Version] (MSC service thread 1-1) Hibernate Validator 4.1.0.Final
14:53:52,483 INFO  [org.hibernate.validator.engine.resolver.DefaultTraversableResolver] (MSC service thread 1-1) Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
14:53:52,750 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.faces.validation.InputElement from being installed as bean due to @Veto annotation
14:53:52,820 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] (MSC service thread 1-1) HHH00227:Running hbm2ddl schema export
14:53:52,845 INFO  [org.hibernate.tool.hbm2ddl.SchemaExport] (MSC service thread 1-1) HHH00230:Schema export complete
14:53:53,314 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.international.locale.LocaleConfiguration from being installed as bean due to @Veto annotation
14:53:53,780 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Preventing installation of default bean: org.jboss.seam.security.IdentityImpl
14:53:54,297 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.solder.core.VersionLoggerUtil from being installed as bean due to @Veto annotation
14:53:54,710 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.solder.resourceLoader.ResourceProvider from being installed as bean due to @Veto annotation
14:53:55,166 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.servlet.http.HttpServletRequestContext from being installed as bean due to @Veto annotation
14:53:55,366 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.servlet.ServletRequestContext from being installed as bean due to @Veto annotation
14:53:55,434 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.examples.booking.model.User from being installed as bean due to @Veto annotation
14:53:55,452 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.examples.booking.model.Booking from being installed as bean due to @Veto annotation
14:53:55,456 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.examples.booking.model.Hotel from being installed as bean due to @Veto annotation
14:53:55,588 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.UTTransaction from being installed as bean due to @Veto annotation
14:53:55,622 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.SeSynchronizations from being installed as bean due to @Veto annotation
14:53:55,643 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.CMTTransaction from being installed as bean due to @Veto annotation
14:53:55,647 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.EntityTransaction from being installed as bean due to @Veto annotation
14:53:55,733 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.persistence.hibernate.HibernateManagedSessionExtensionImpl from being installed as bean due to @Veto annotation
14:53:55,744 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.NoTransaction from being installed as bean due to @Veto annotation
14:53:55,821 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.transaction.HibernateTransaction from being installed as bean due to @Veto annotation
14:53:55,829 INFO  [org.jboss.seam.solder.core.CoreExtension] (MSC service thread 1-2) Preventing class org.jboss.seam.persistence.HibernatePersistenceProvider from being installed as bean due to @Veto annotation
14:53:56,156 INFO  [org.jboss.seam.config.xml.bootstrap.XmlConfigExtension] (MSC service thread 1-2) Wrapping InjectionTarget to set field values: org.jboss.seam.security.IdentityImpl
14:53:56,251 INFO  [org.jboss.seam.international.status.TypedStatusMessageBundleExtension] (MSC service thread 1-2) Add @MessageBundle to org.jboss.seam.solder.reflection.annotated.AnnotatedTypeBuilder.messages injection point for the type: org.jboss.seam.solder.support.SolderMessages
14:53:56,356 INFO  [org.jboss.seam.international.status.TypedStatusMessageBundleExtension] (MSC service thread 1-2) Add @MessageBundle to org.jboss.seam.solder.reflection.annotated.AnnotationBuilder.messages injection point for the type: org.jboss.seam.solder.support.SolderMessages
14:53:57,391 INFO  [org.jboss.seam.examples.booking.bootstrap.ApplicationInitializer] (MSC service thread 1-1) Importing seed data for application Seam Booking Example (Java EE Environment)
14:53:57,806 INFO  [org.jboss.seam.examples.booking.bootstrap.ApplicationInitializer] (MSC service thread 1-1) Seed data successfully imported
14:53:57,857 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-1) Initializing Mojarra 2.0.4 (FCS b09-jbossorg-4) for context ''
14:53:59,753 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-1) Monitoring jndi:/default-host/WEB-INF/faces-config.xml for modifications
14:53:59,794 INFO  [com.ocpsoft.pretty.PrettyFilter] (MSC service thread 1-1) PrettyFilter starting up...
14:54:00,201 INFO  [com.ocpsoft.pretty.PrettyFilter] (MSC service thread 1-1) PrettyFilter initialized.
14:54:00,210 INFO  [seam-servlet] (MSC service thread 1-1) Catch Integration for Servlets enabled
14:54:00,230 INFO  [org.jboss.web] (MSC service thread 1-1) registering web context: 
14:54:00,287 INFO  [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "ROOT.war"

Both the Express and Flex cartridges are based on the JBossAS7 web profile. Express reduces some of the services enabled by default in the web profile as I discussed in this post, while Flex actually adds addition services for clustering of web sessions using Infinispan and JGroups.

 

Web Session Clustering

The configuration of the web session cache replication employs a configuration that utilizes a TCP based JGroups configuration, and a FILE_PING discovery protocol that utilizes the Flex underlying clustered file system based on the glusterfs. The reason for use of TCP is that multicast is not usable in the Amazon cloud environment, and the reason the FILE_PING discovery protocol is used is that the Flex layer is in control of the cluster membership. By writing the cluster membership to the application shared directory, Flex is in control of what nodes an application sees. The Infinispan and JGroups subsystem configuration fragments are listed here:

 

        <subsystem xmlns="urn:jboss:domain:infinispan:1.0" default-cache-container="hibernate">
            <cache-container name="hibernate" default-cache="local-query">
                <local-cache name="entity">
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="local-query">
                    <eviction strategy="LRU" max-entries="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <local-cache name="timestamps">
                    <eviction strategy="NONE"/>
                </local-cache>
            </cache-container>
            <!-- web session replication cache definitions -->
            <cache-container name="web" default-cache="repl">
                <alias>standard-session-cache</alias>
                <transport stack="tcp" />
                <replicated-cache name="repl" mode="ASYNC" batching="true">
                    <locking isolation="REPEATABLE_READ"/>
                    <file-store/>
                </replicated-cache>
                <distributed-cache name="dist" mode="ASYNC" batching="true">
                    <locking isolation="REPEATABLE_READ"/>
                    <file-store/>
                </distributed-cache>
            </cache-container>
        </subsystem>
        <subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="tcp">
            <stack name="tcp">
                <transport type="TCP" socket-binding="jgroups-tcp" diagnostics-socket-binding="jgroups-diagnostics"/>
                <protocol type="FILE_PING">
                  <property name="location">${vostok.app.shared}</property>
                  <property name="timeout">5000</property>
                  <property name="num_initial_members">1</property>
                </protocol>
                <protocol type="MERGE2"/>
                <protocol type="FD_SOCK" socket-binding="jgroups-tcp-fd"/>
                <protocol type="FD"/>
                <protocol type="VERIFY_SUSPECT"/>
                <protocol type="BARRIER"/>
                <protocol type="pbcast.NAKACK"/>
                <protocol type="UNICAST"/>
                <protocol type="pbcast.STABLE"/>
                <protocol type="VIEW_SYNC"/>
                <protocol type="pbcast.GMS"/>
                <protocol type="UFC"/>
                <protocol type="MFC"/>
                <protocol type="FRAG2"/>
                <protocol type="pbcast.STREAMING_STATE_TRANSFER"/>
                <protocol type="pbcast.FLUSH"/>
            </stack>
        </subsystem>

 

The ${vostok.app.shared} value is an application specific directory that is shared across the cluster members assocaited with the application. The Flex environment maintains the application distributed directory for each application.

 

Server Isolation

Both the Flex and Express environments launch a JBossAS7 instance for the logical PAAS application. In the current implementations, the mechanism by which the JBossAS7 server instances are isolated on a given PAAS envionrment EC2 server instance differ due to differences in the current Flex and Express implementations.

 

Isolation by Interface

The Express environment assigns each application a unique IP address on the loopback interface. It is a property of Fedora/RHEL that one can bind unique loopback addresses without having to configure a specific alias. When the AS7 cartridge is called to configure an application, it locates the next unique loopback interface IP address, and set the {ip} placeholder in the following standalone.xml fragement with the IP address:

 

<server xmlns="urn:jboss:domain:1.0">
   <management>
...


    <interfaces>
        <interface name="management">
            <loopback-address value="{ip}"/>
        </interface>
        <interface name="public">
            <loopback-address value="{ip}"/>
        </interface>
    </interfaces>

</server>

 

Isolation by Ports

In the Flex environment, there is no support currently available for assigning the cartridge a unique loopback address, so what the Flex cartridge does is to determine a unique port offset based on the available of a free http port. It starts at the default value of 8080, and advances by 100 until a free port is found. The offset is then used as the port-offset value socket-binding-group configuration. The offset also has to be applied separately to each of the managment-interfaces ports due to issue: (https://issues.jboss.org/browse/AS7-1476). Note that this configuration fragment also show the use of the eth0 interface by the JGroups port references shown in the above JGroups fragment. The eth0 interface is usable interface between the instances in the Flex cluster.

 

<server xmlns="urn:jboss:domain:1.0">

   <management>

...

        <management-interfaces>

           <native-interface interface="management" port="9999" />

           <http-interface interface="management" port="9990"/>

        </management-interfaces>

    </management>

 

    <interfaces>

        <interface name="management">

            <inet-address value="127.0.0.1"/>

        </interface>

        <interface name="public">

           <inet-address value="127.0.0.1"/>

        </interface>

        <interface name="eth0">

           <nic name="eth0"/>

        </interface>

    </interfaces>

 

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset='0'>

...

        <socket-binding name="jgroups-tcp" port="7600" interface="eth0" />

        <socket-binding name="jgroups-tcp-fd" port="57600" interface="eth0" />

...

    </socket-binding-group>

</server>

In this post I'm drilling into some of the details of OpenShift from the perspective of the JBossAS7 cartridges that were created for Express and Flex. The basic notion in terms of providing a PaaS container is that of a cartridge. A cartridge plugs functionality into the PaaS environment, and is responsible for handling cartridge callouts known as hooks. The hooks are what handle container specific details of installing/starting/stopping/removing PaaS applications that rely on a given container type. A PaaS application may use more than one cartridge as part of the application. One example of this usage for the JavaEE applications the JBossAS7 cartridge supports would be a MySQL cartridge that provides a MySQL database for use by the application.

 

Let's look at what the JBossAS7 cartridge does in the two environments.

Express

The Express environment is oriented toward a developer getting their application running. It runs with a more limited JBossAS7 server as I described in JBossAS7 Configuration in OpenShift Express. The focus is on a single node, git repository development model where you update your application in either source or binary form and push it out to the OpenShift environment to have an application running quickly. There is little you can configure in the environment in terms of the server the app runs on, and the only access to the server you have is through the command line tools and the application git repository.

 

The Express cartridge framework supports the following cartridge hooks. The hooks highlighted in bold are the only ones the JBossAS7 cartridge provides an implementation for:

 

  • add-module
  • configure
    • This is where most of the work is done. It is a bash script which creates an application local JBossAS7 instance with it's standalone/deployments directory mapped to the user's git repository deployments content. It creates the git repository with git hooks to build and restart the server if a source development model is in effect, sets up a control shell script which handles the real work for the start/stop/restart/status hooks, links the log files to where the Express framework picks them up, updates the standalone.xml with the loopback address assigned to the application, and installs an httpd configuration to proxy the external application url to the JBossWeb container. This also starts the JBossAS7 server.
  • deconfigure
    • Removal of application and it's setup
  • info
  • post-install
  • post-remove
  • pre-install
    • simply checks that the java-1.6.0-openjdk httpd rpm packages are installed
  • reload
  • remove-module
  • restart
  • start
    • This is a simple bash script which calls out to the control shell script to start the server. This ends up calling the application's JBossAS7 bin/standalone.sh to launch the server.
  • status
    • Checks if the server is running and if so, returns the tail of the server.log. If the server is not running, reports that as the status.
  • stop
    • This is a simple bash script which calls out to the control shell script to stop the server.
  • update_namespace

 

The git repository for the application contains some configuration and scripts that can be updated to control your application deployment on the server. I'll talk about those in a seperate blog entry.

Flex

The Flex framework is not surprisingly, much more flexible with respect to what you can control in the PaaS environment. You have control over cluster definitions, and other IaaS aspects in addition to your PaaS containers.

 

  • configure
    • This is a Python class where the initial setup of the application specific JBossAS7 instance is done. It lays down the JBossAS7 structure. There is integration with the Flex console configuration wizard which displays the MySQL datasource fields as well.
  • deconfigure
    • Removal of application and it's setup
  • post-install
    • Integrates the JBossWeb instrumentation module that allows tracking of web requests by Flex
  • start
    • This is a bash script finishes some configuration details like determining which port offset to use . As I described in this post Differences Between the Express and Flex JBossAS7 Configurations, Flex and Express differ in how they isolate the JBossAS7 instances. In Flex, a port offset is determined at startup time based on the existence of other http listening ports. The start script also links the standalone/deployments directory to the application git repository, and well as the log file location the Flex console looks to, and installs an httpd configuration to proxy the external application url to the JBossWeb container.
  • stop
    • This calls out to the bin/jboss-admin.sh script to shutdown the server, using the port offset information to determine how to connect to the server.

 

Future (Codename TBD)

Right now the Express/Flex environments are based on very different internal infrastructures, and even though they build on the concept of a cartridge, the implementations are different. This is not a good thing for many reasons, not the least of which is that it complicates opening up development to a wider community. To address this, the OpenShift architecture is moving to a public, open source development mode that will be hosted on github under the following Organization:

https://github.com/openshift

 

The new project is called Codename TBD (not really, but it is still being discussed), and the goal is to develop a common cartridge SPI/API and infrastructure to address the current duplication of effort and limitations. To that end, I invite you to browse the existing code and docs in the github organization repositories, as well as the OpenShift Community pages.

 

We are looking for feedback from both the end user PaaS developer as well as PaaS container providers. My involvement will be from the perspective of what PaaS notions can be pushed as standards for consieration in JavaEE 7 and 8.

The JBossAS7 OpenShift Express cartridge runs in a constrained environment that restricts what ports can be used as well as how much memory, and  the number of processes the user can run. The current limitations set the Java memory at 128Mb of max heap, and 83Mb of permgen, so your applications need to fit within that constraint. Also, the express user running the application is limited to about 100 processes, which translates to a max of 80 or so java threads, so excessive thread creation can eat up available processes and begin to cause java.lang.OutOfMemoryErrors with a failure to create native thread cause.

The configuration of the JBossAS7 server used by the OpenShift Express JBoss cartridge is a simple modification of the jboss-as-web-7.0.0.Final release which my be obtained fromhttp://www.jboss.org/as7.html

 

The contents of the server are then overwritten by the attached standalone.xml, standalone.conf and mysql.tar archive for the mysql jdbc driver module. The exact steps would be:

  1. wget http://download.jboss.org/jbossas/7.0/jboss-as-7.0.0.Final/jboss-as-web-7.0.0.Final.zip
  2. unzip  jboss-as-web-7.0.0.Final.zip
  3. Download this documents attachments
  4. unzip standalone.xml.zip to get standalone.xml
  5. cp standalone.xml  jboss-as-web-7.0.0.Final/standalone/configuration
  6. unzip standalone.conf.zip to get standalone.conf
  7. cp standalone.conf  jboss-as-web-7.0.0.Final/bin
  8. tar -xvf mysql.tar -C jboss-as-web-7.0.0.Final

 

At this point starting the server using the  jboss-as-web-7.0.0.Final/bin/standalone.sh command has the server configured the same as that run by the Express JBossAS7 cartridge. In terms of services or subsystems that are available in the jboss-as-web-7.0.0.Final that have been removed from the server as used by Express, they are:

  • JMS
  • Managment interfaces/console
  • Webservices
  • OSGi
  • JMX connector
  • Remote EJB access

 

 

For reference, the exact difference between the express standalone.xml and the jboss-as-web-7.0.0.Final version is:

 

 

[650](ironmaiden:tmp) > diff express-standalone.xml jboss-as-web-7.0.0.Final/standalone/configuration/standalone.xml 
35a36,37
>         <extension module="org.jboss.as.osgi"/>
>         <extension module="org.jboss.as.remoting"/>
43a46,59
>     <management>
>          <security-realms>
>               <security-realm name="PropertiesMgmtSecurityRealm">
>                    <authentication>
>                         <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir" />
>                    </authentication>
>               </security-realm>
>          </security-realms>
>         <management-interfaces>
>            <native-interface interface="management" port="9999" />
>            <http-interface interface="management" port="9990"/>
>         </management-interfaces>
>     </management>
> 
83c99
<                     <connection-url>jdbc:h2:${jboss.server.data.dir}/test;DB_CLOSE_DELAY=-1</connection-url>
---
>                     <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
139a156,158
>         <subsystem xmlns="urn:jboss:domain:jmx:1.0">
>             <jmx-connector registry-binding="jmx-connector-registry" server-binding="jmx-connector-server" />
>         </subsystem>
143a163,225
>         <subsystem xmlns="urn:jboss:domain:osgi:1.0" activation="lazy">
>             <configuration pid="org.apache.felix.webconsole.internal.servlet.OsgiManager">
>                 <property name="manager.root">jboss-osgi</property>
>             </configuration>
>             <properties>
>                 <!--
>                     A comma seperated list of module identifiers. Each system module
>                     is added as a dependency to the OSGi framework module. The packages
>                     from these system modules can be made visible as framework system packages.
>                     http://www.osgi.org/javadoc/r4v42/org/osgi/framework/Constants.html#FRAMEWORK_SYSTEMPACKAGES_EXTRA
>                 -->
>                 <property name="org.jboss.osgi.system.modules">
>                 org.apache.commons.logging,
>                 org.apache.log4j,
>                 org.jboss.as.osgi,
>                 org.slf4j,
>                 </property>
>                 <!--
>                     Framework environment property identifying extra packages which the system bundle
>                     must export from the current execution environment
>                 -->
>                 <property name="org.osgi.framework.system.packages.extra">
>                 org.apache.commons.logging;version=1.1.1,
>                 org.apache.log4j;version=1.2,
>                 org.jboss.as.osgi.service;version=7.0,
>                 org.jboss.osgi.deployment.interceptor;version=1.0,
>                 org.jboss.osgi.spi.capability;version=1.0,
>                 org.jboss.osgi.spi.util;version=1.0,
>                 org.jboss.osgi.testing;version=1.0,
>                 org.jboss.osgi.vfs;version=1.0,
>                 org.slf4j;version=1.5.10,
>                 </property>
>                 <!-- Specifies the beginning start level of the framework -->
>                 <property name="org.osgi.framework.startlevel.beginning">1</property>
>             </properties>
>             <modules>
>                 <!-- modules registered with the OSGi layer on startup -->
>                 <module identifier="javaee.api"/>
>                 <module identifier="org.jboss.logging"/>
>                 <!-- bundles installed on startup -->
>                 <module identifier="org.apache.aries.util"/>
>                 <module identifier="org.jboss.osgi.webconsole"/>
>                 <module identifier="org.osgi.compendium"/>
>                 <!-- bundles started in startlevel 1 -->
>                 <module identifier="org.apache.felix.log" startlevel="1"/>
>                 <module identifier="org.jboss.osgi.logging" startlevel="1"/>
>                 <module identifier="org.apache.felix.configadmin" startlevel="1"/>
>                 <module identifier="org.jboss.as.osgi.configadmin" startlevel="1"/>
>                 <!-- bundles started in startlevel 2 -->
>                 <module identifier="org.apache.aries.jmx" startlevel="2"/>
>                 <module identifier="org.apache.felix.eventadmin" startlevel="2"/>
>                 <module identifier="org.apache.felix.metatype" startlevel="2"/>
>                 <module identifier="org.apache.felix.scr" startlevel="2"/>
>                 <module identifier="org.apache.felix.webconsole" startlevel="2"/>
>                 <module identifier="org.jboss.osgi.jmx" startlevel="2"/>
>                 <module identifier="org.jboss.osgi.http" startlevel="2"/>
>                 <!-- bundles started in startlevel 3 -->
>                 <module identifier="org.jboss.osgi.blueprint" startlevel="3"/>
>                 <module identifier="org.jboss.osgi.webapp" startlevel="3"/>
>                 <module identifier="org.jboss.osgi.xerces" startlevel="3"/>
>             </modules>
>         </subsystem>
>         <subsystem xmlns="urn:jboss:domain:remoting:1.0"/>
167c249
<             <virtual-server name="default-host" enable-welcome-root="false">
---
>             <virtual-server name="default-host" enable-welcome-root="true">
168a251
>                <alias name="example.com" />
176c259
<             <loopback-address value="127.0.250.1"/>
---
>             <inet-address value="127.0.0.1"/>
179c262
<             <loopback-address value="127.0.250.1"/>
---
>            <inet-address value="127.0.0.1"/>

As part of the testing of the AS7 server configuration used by the OpenShift Express cartridge, I needed to profile how many threads were being created and run. I used Byteman to do this, and I describe how this was done in the following Byteman section article:

http://community.jboss.org/wiki/TrackingThreadsInJBossAS7

Filter Blog

By date:
By tag: