Monday, December 29, 2008

jBPM 3.3.0.GA and JBoss AS 4.2.3.GA

The ops guys had already installed JBoss 4.2.3.GA on our servers. In an attempt to submit as few help desk requests as possible I decided to port jBPM 3.3.0.GA to JBoss instead of asking them to roll back.

The new docs say,

"The jbpm directory
"When jBPM is installed on a server configuration in JBoss, only the jbpm directory is added to the deploy directory and all components will be deployed under that directory. No other files of JBoss are changed or added outside that directory. "

I figured that would be a good place to start.

I copied the jbpm folder from the 3.3.0.GA distro to a clean JBoss 4.2.3.GA that I built from source.

I opened my browser and checked, "http://localhost:8080/jbpm-console." I tried logging in with "manager/manager." I got the error, "Login failed. Invalid user name or password. "

I added the following to $JBOSS_INSTALL/server/default/conf/login-congif.xml :

<application-policy name = "jbpm">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag="required">
<module-option name="dsJndiName">java:/JbpmDS</module-option>
<module-option name="principalsQuery">
SELECT PASSWORD_ FROM JBPM_ID_USER WHERE NAME_=?
</module-option>
<module-option name="rolesQuery">
SELECT g.NAME_ ,'Roles'
FROM JBPM_ID_USER u,
JBPM_ID_MEMBERSHIP m,
JBPM_ID_GROUP g
WHERE g.TYPE_='security-role'
AND m.GROUP_ = g.ID_
AND m.USER_ = u.ID_
AND u.NAME_=?
</module-option>
</login-module>
</authentication>
</application-policy>

When I restarted I could log in fine. I saw the processes that I had been working on.

Monday, December 15, 2008

Adding jBPM support to a Seam app

I created my app with seam-gen. While adding support for jBPM, I got the following error :

Caused by: org.dom4j.DocumentException: Error on line 29 of document  : The prefix "bpm" for element "bpm:jbpm" is not bound. Nested exception: The prefix "bpm" for element "bpm:jbpm" is not bound.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:343)
at org.jboss.seam.util.XML.getRootElement(XML.java:24)
at org.jboss.seam.init.Initialization.initComponentsFromXmlDocument(Initialization.java:217)

The fix was to add the following to <components> declaration in the components.xml :


xmlns:bpm="http://jboss.com/products/seam/bpm"
Here's a nice tutorial from mastertheboss on adding jBPM support to a Seam app.

Thursday, December 4, 2008

Seam Tip Number 5

If you ever copy and paste a project directory be sure to change the seam-gen.properties file.

I got a new MacBook Pro. I copied my Eclipse workspaces over of course.

I made some changes to the entities in a project. I then opened a terminal and ran "seam generate-ui." I got a FileNotFound exception in build.xml line 1154 . Something was still pointing to the C:/ drive.

Inside the root Eclipse project directory there is a seam-gen.properties file. Changing that fixes anything.

jBPM 3.3.0.GA and Oracle 10g Express Server

I grabbed the jBPM 3.3.0.GA release. I got a process deployed under hsqldb to make sure everything worked. The next step is to switch out hsqldb for Oracle XE. I run Oracle XE under parallels.

The user guide chapter 7 lays out the changes.

One "gotcha: I had was the type mapping in the datasource. "Oracle9i" was the appropriate setting. It took me a couple of tries.

The datasource, located in /jbpm-3.3.0.GA/jboss-4.2.2.GA/server/default/deploy/jbpm, I ended up with :
<?xml version="1.0" encoding="UTF-8"?>

<!-- ===================================================================== -->
<!-- -->
<!-- JBoss Server Configuration -->
<!-- -->
<!-- ===================================================================== -->

<!-- $Id: oracle-ds.xml 71535 2008-04-01 07:05:03Z adrian@jboss.org $ -->
<!-- ==================================================================== -->
<!-- Datasource config for Oracle originally from Steven Coy -->
<!-- ==================================================================== -->


<datasources>
<local-tx-datasource>
<jndi-name>JbpmDS</jndi-name>
<connection-url>jdbc:oracle:thin:@IP_ADDRESS:1521:xe</connection-url>
<!--

Here are a couple of the possible OCI configurations.
For more information, see http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/java.920/a96654/toc.htm

<connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>
or
<connection-url>jdbc:oracle:oci:@(description=(address=(host=youroraclehost)(protocol=tcp)(port=1521))(connect_data=(SERVICE_NAME=yourservicename)))</connection-url>

Clearly, its better to have TNS set up properly.
-->
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>USER_NAME</user-name>
<password>PASSWORD</password>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<!--valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name-->
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->

<!-- sql to call on an existing pooled connection when it is obtained from pool - the OracleValidConnectionChecker is prefered
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>

</datasources>

The hibernate.cfg.xml, located in /jbpm-3.3.0.GA/jboss-4.2.2.GA/server/default/deploy/jbpm/jbpm-service.sar, I ended up with :

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

<!-- hibernate dialect -->
<!--
<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>

<!-- JDBC connection properties (begin) ===
<property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="hibernate.connection.url">jdbc:hsqldb:mem:jbpm</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
==== JDBC connection properties (end) -->


<!-- DataSource properties (begin)
<property name="hibernate.connection.datasource">java:comp/env/jdbc/JbpmDataSource</property>
-->
<property name="hibernate.connection.datasource">java:/JbpmDS</property>
<!-- DataSource properties (end) -->

<!-- JTA transaction properties (begin) -->
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
<!-- JTA transaction properties (end) -->

<!-- CMT transaction properties (begin) ===
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
<property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
==== CMT transaction properties (end) -->

<!-- ################################### -->
<!-- # common settings # -->
<!-- ################################### -->

<!-- Automatic schema creation (begin) ===
<property name="hibernate.hbm2ddl.auto">create</property>
==== Automatic schema creation (end) -->

<!-- Simple memory-only cache -->
<property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

<!-- logging properties -->
<property name="hibernate.format_sql">true</property>
<property name="hibernate.use_sql_comments">true</property>

<!-- ############################################ -->
<!-- # mapping files with external dependencies # -->
<!-- ############################################ -->

<!-- Additional mappings defined per module go here -->
<mapping resource="hibernate.extra.hbm.xml" />
<mapping resource="hibernate.identity.hbm.xml" />


<!-- ###################### -->
<!-- # jbpm mapping files # -->
<!-- ###################### -->

<!-- hql queries and type defs -->
<mapping resource="org/jbpm/db/hibernate.queries.hbm.xml" />
<!-- hql queries used in simulation for querying historical data
uncomment if you want to use the GetSimulationInputCommand
or maybe you also want to use the queries yourself
be patient: the queries need the stddev function to be enabled in your dialect
more information on this can be found here: http://www.camunda.com/business_process_simulation_news/mysql_and_stddev.html -->
<!--
<mapping resource="org/jbpm/sim/bam/hibernate.queries.hbm.xml" />
-->

<!-- graph.action mapping files -->
<mapping resource="org/jbpm/graph/action/MailAction.hbm.xml"/>

<!-- graph.def mapping files -->
<mapping resource="org/jbpm/graph/def/ProcessDefinition.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/Node.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/Transition.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/Event.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/Action.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/SuperState.hbm.xml"/>
<mapping resource="org/jbpm/graph/def/ExceptionHandler.hbm.xml"/>
<mapping resource="org/jbpm/instantiation/Delegation.hbm.xml"/>

<!-- ############################################ -->
<!-- # another mapping file with external dependencies # -->
<!-- ############################################ -->
<!-- following mapping file has a dependency on -->
<!-- 'bsh-{version}.jar'. -->
<!-- uncomment this if you don't have bsh on your -->
<!-- classpath. you won't be able to use the -->
<!-- script element in process definition files -->
<!-- has to be defined below org/jbpm/graph/def/Action.hbm.xml -->
<!-- due to the inline collection-cache elements below -->
<mapping resource="org/jbpm/graph/action/Script.hbm.xml"/>

<!-- graph.node mapping files -->
<mapping resource="org/jbpm/graph/node/StartState.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/EndState.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/ProcessState.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/Decision.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/Fork.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/Join.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/MailNode.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/State.hbm.xml"/>
<mapping resource="org/jbpm/graph/node/TaskNode.hbm.xml"/>

<!-- context.def mapping files -->
<mapping resource="org/jbpm/context/def/ContextDefinition.hbm.xml"/>
<mapping resource="org/jbpm/context/def/VariableAccess.hbm.xml"/>

<!-- bytes mapping files -->
<mapping resource="org/jbpm/bytes/ByteArray.hbm.xml"/>

<!-- module.def mapping files -->
<mapping resource="org/jbpm/module/def/ModuleDefinition.hbm.xml"/>

<!-- file.def mapping files -->
<mapping resource="org/jbpm/file/def/FileDefinition.hbm.xml"/>

<!-- taskmgmt.def mapping files -->
<mapping resource="org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/def/Swimlane.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/def/Task.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/def/TaskController.hbm.xml"/>

<!-- scheduler.def mapping files -->
<mapping resource="org/jbpm/scheduler/def/CreateTimerAction.hbm.xml"/>
<mapping resource="org/jbpm/scheduler/def/CancelTimerAction.hbm.xml"/>

<!-- graph.exe mapping files -->
<mapping resource="org/jbpm/graph/exe/Comment.hbm.xml"/>
<mapping resource="org/jbpm/graph/exe/ProcessInstance.hbm.xml"/>
<mapping resource="org/jbpm/graph/exe/Token.hbm.xml"/>
<mapping resource="org/jbpm/graph/exe/RuntimeAction.hbm.xml"/>

<!-- module.exe mapping files -->
<mapping resource="org/jbpm/module/exe/ModuleInstance.hbm.xml"/>

<!-- context.exe mapping files -->
<mapping resource="org/jbpm/context/exe/ContextInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/TokenVariableMap.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/VariableInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/NullInstance.hbm.xml"/>
<mapping resource="org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml"/>

<!-- job mapping files -->
<mapping resource="org/jbpm/job/Job.hbm.xml"/>
<mapping resource="org/jbpm/job/Timer.hbm.xml"/>
<mapping resource="org/jbpm/job/ExecuteNodeJob.hbm.xml"/>
<mapping resource="org/jbpm/job/ExecuteActionJob.hbm.xml"/>
<mapping resource="org/jbpm/job/CleanUpProcessJob.hbm.xml"/>

<!-- taskmgmt.exe mapping files -->
<mapping resource="org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/exe/PooledActor.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml"/>

<!-- logging mapping files -->
<mapping resource="org/jbpm/logging/log/ProcessLog.hbm.xml"/>
<mapping resource="org/jbpm/logging/log/MessageLog.hbm.xml"/>
<mapping resource="org/jbpm/logging/log/CompositeLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/ActionLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/NodeLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/ProcessStateLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/SignalLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/TokenCreateLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/TokenEndLog.hbm.xml"/>
<mapping resource="org/jbpm/graph/log/TransitionLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/VariableLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/VariableCreateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/VariableDeleteLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/VariableUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/TaskLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml"/>
<mapping resource="org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml"/>

<!-- ################################### -->
<!-- # cache settings # -->
<!-- # strategy="nonstrict-read-write" # -->
<!-- # can be used with hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider # -->
<!-- ################################### -->

<class-cache class="org.jbpm.context.def.VariableAccess" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.file.def.FileDefinition.processFiles" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.graph.action.Script.variableAccesses" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.Action" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.Event" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Event.actions" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.ExceptionHandler" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ExceptionHandler.actions" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.Node" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Node.events" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Node.exceptionHandlers" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Node.leavingTransitions" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Node.arrivingTransitions" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.ProcessDefinition" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ProcessDefinition.events" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ProcessDefinition.exceptionHandlers" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ProcessDefinition.nodes" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ProcessDefinition.actions" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.ProcessDefinition.definitions" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.graph.def.SuperState.nodes" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.graph.def.Transition" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Transition.events" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.graph.def.Transition.exceptionHandlers" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.graph.node.Decision.decisionConditions" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.graph.node.ProcessState.variableAccesses" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.graph.node.TaskNode.tasks" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.instantiation.Delegation" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.module.def.ModuleDefinition" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.taskmgmt.def.Swimlane.tasks" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.taskmgmt.def.TaskController" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.taskmgmt.def.TaskController.variableAccesses" usage="nonstrict-read-write" />

<class-cache class="org.jbpm.taskmgmt.def.Task" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.taskmgmt.def.Task.events" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.taskmgmt.def.Task.exceptionHandlers" usage="nonstrict-read-write" />

<collection-cache collection="org.jbpm.taskmgmt.def.TaskMgmtDefinition.swimlanes" usage="nonstrict-read-write" />
<collection-cache collection="org.jbpm.taskmgmt.def.TaskMgmtDefinition.tasks" usage="nonstrict-read-write" />


</session-factory>
</hibernate-configuration>

Wednesday, December 3, 2008

Unsigned JUnit 4 in JBoss Developer Studio

Running a JUnit4 test I got the following error :

junit.framework.JUnit4TestCaseFacade"'s signer information does not match signer information of other classes in the same package
Apparently other people have had the same problem with Europa.

The solution was easy.  I downloaded JUnit4 jars and created a new User Library with them.  I then added my new user library to the project and the run configuration.

To add the new library to the project :
  • I downloaded Junit4 and its' sources.
  • I put both jars in "/Users/[USER_NAME]/Java."
  • I control-clicked on the prject name and chose "Build Path -> Configure Build Path."
  • Under "Libraries" I removed the JUnit 4 library.
  • I clicked "Add Library -> User Library -> Next -> User Libraries -> New" and created a Library called "JUnit4 Local."
  • I added the jars I downloaded.

To add the new library to the run configuration :
  • Run Button -> Run Configurations
  • The most recently run test is highlighted.  Choose the one that needs to be changed.
  • Click the "Classpath" tab.
  • Expand "User Entries"
  • Remove the existing JUnit4 library.
  • Add the user library.

Thursday, November 27, 2008

Building jBPM 3.3.0.GA From Source

The reason for this extremely long post is simply to save someone time in the event they are having the same problems. The errors I got are copied here in their entirety in the even that someone is googling them.  The moral of this story is to update after checkout!

jBPM 3.3.0.GA is out!

Sweet.  I'll build it from source.

First, I checked it out from the svn repository.  I used Eclipse and checked it out as a project.

Second, control click (new MacBook Pro!) on the pom.xml in the root directory.  I chose "run as -> Maven package"  That didn't work.

[INFO] [jar:jar]
[INFO] Building jar: [ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/core/target/jbpm-jpdl-3.3.1-SNAPSHOT.jar
[INFO] [assembly:single]
[INFO] Reading assembly descriptor: [ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/core/scripts/assembly-config.xml
Exception in thread "main" java.lang.NullPointerException
at org.apache.maven.plugin.assembly.archive.ManifestCreationFinalizer.getVirtualFiles(ManifestCreationFinalizer.java:99)
at org.codehaus.plexus.archiver.AbstractArchiver.hasVirtualFiles(AbstractArchiver.java:546)
at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:258)
at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.execute(AbstractZipArchiver.java:242)
at org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:513)
at org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:103)
at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:278)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149)
at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223)
at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1)
at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904)
at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:176)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:63)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:52)


I don't have a lot of experience with Maven.  I like the idea of Maven more than its actuality.  The repository is a great idea.  But I have found it painful to use.

I'm using MyEclipse at the moment.  I've used for years now; although, I had switched to Eclipse with the JBoss Tools for the past few months.   I opened the run dialog () and created a new Maven run profile.

I checked "Debug Output" and ran it again.  This time I got a lot more information.
[INFO] Reading assembly descriptor: [ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/core/scripts/assembly-config.xml
[DEBUG] No dependency sets specified.
[DEBUG] FileSet[/] dir perms: 40755 file perms: 100644
[DEBUG] The archive base directory is 'null'
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-antrun-plugin:1.1@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-antrun-plugin:1.1@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-site-plugin:2.0-beta-6@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-site-plugin:2.0-beta-6@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-resources-plugin:2.2@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-resources-plugin:2.2@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-surefire-plugin:2.4.2@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-surefire-plugin:2.4.2@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-1@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-1@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-compiler-plugin:2.0.2.SP1@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-compiler-plugin:2.0.2.SP1@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-source-plugin:2.0.4@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-source-plugin:2.0.4@48/thread:main
[DEBUG] disposing managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-jar-plugin:2.2@48/thread:main
[DEBUG] dissociating all components from managed ClassRealm with id: /plugins/org.apache.maven.plugins:maven-jar-plugin:2.2@48/thread:main
Exception in thread "main" java.lang.NullPointerException
at org.apache.maven.plugin.assembly.archive.ManifestCreationFinalizer.getVirtualFiles(ManifestCreationFinalizer.java:99)
at org.codehaus.plexus.archiver.AbstractArchiver.hasVirtualFiles(AbstractArchiver.java:546)
at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:258)
at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.execute(AbstractZipArchiver.java:242)
at org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:513)
at org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:103)
at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:278)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:579)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:498)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149)
at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223)
at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1)
at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904)
at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:176)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:63)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:52)



The line, "The archive base directory is 'null'" didn't look good.

I decided to try from the command line.  This time there were test failures:
Running org.jbpm.enterprise.jta.JtaDbPersistenceTest
java.lang.RuntimeException: Cannot obtain MBeanServerConnection using jndi props: {java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.provider.url=localhost:1099, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
at org.jboss.bpm.api.test.IntegrationTestHelper.getServer(IntegrationTestHelper.java:131)
at org.jboss.bpm.api.test.IntegrationTestHelper.getDeployer(IntegrationTestHelper.java:139)
at org.jboss.bpm.api.test.IntegrationTestHelper.deploy(IntegrationTestHelper.java:58)
at org.jboss.bpm.api.test.IntegrationTestHelper.deploy(IntegrationTestHelper.java:53)
at org.jboss.bpm.api.test.IntegrationTestSetup.setUp(IntegrationTestSetup.java:105)
at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.extensions.TestSetup.run(TestSetup.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
Caused by: javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1562)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:634)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.jboss.bpm.api.test.IntegrationTestHelper.getServer(IntegrationTestHelper.java:127)
... 21 more
Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:274)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1533)
... 25 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:248)
... 26 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:520)
at java.net.Socket.connect(Socket.java:470)
at java.net.Socket.<init>(Socket.java:367)
at java.net.Socket.<init>(Socket.java:267)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:84)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:77)
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:244)
... 26 more
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 11.054 sec <<< FAILURE!
Running org.jbpm.enterprise.config.AppServerConfigurationsTest
java.lang.RuntimeException: Cannot obtain MBeanServerConnection using jndi props: {java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.provider.url=localhost:1099, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
at org.jboss.bpm.api.test.IntegrationTestHelper.getServer(IntegrationTestHelper.java:131)
at org.jboss.bpm.api.test.IntegrationTestHelper.getDeployer(IntegrationTestHelper.java:139)
at org.jboss.bpm.api.test.IntegrationTestHelper.deploy(IntegrationTestHelper.java:58)
at org.jboss.bpm.api.test.IntegrationTestHelper.deploy(IntegrationTestHelper.java:53)
at org.jboss.bpm.api.test.IntegrationTestSetup.setUp(IntegrationTestSetup.java:105)
at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.extensions.TestSetup.run(TestSetup.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
Caused by: javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1562)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:634)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at org.jboss.bpm.api.test.IntegrationTestHelper.getServer(IntegrationTestHelper.java:127)
... 21 more
Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:274)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1533)
... 25 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:248)
... 26 more
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:520)
at java.net.Socket.connect(Socket.java:470)
at java.net.Socket.<init>(Socket.java:367)
at java.net.Socket.<init>(Socket.java:267)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:84)
at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:77)
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:244)
... 26 more
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 10.082 sec <<< FAILURE!
Running org.jbpm.enterprise.config.ContainerProvidedJarsTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 5.019 sec <<< FAILURE!

Results :

Tests in error:
org.jbpm.enterprise.jta.JtaDbPersistenceTest
org.jbpm.enterprise.config.AppServerConfigurationsTest
testDependencies(org.jbpm.enterprise.config.ContainerProvidedJarsTest)

Tests run: 3, Failures: 0, Errors: 3, Skipped: 0

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] There are test failures.




I started JBoss and try again.  Same thing.

I tried by skipping the tests.  That didn't work either.  I got a compile error.

I changed into the core directory thinking that maybe I had to compile it in a certain order.  I was able to compile the core.  Finally!

Back to the root directory to try again.  Nope.

I changed into the identity directory.  I thought that building individually in the order listed by Maven's output might help me isolate the problem.  

Unfortunately there was a missing dependency,  jbpm-jpdl-3.3.1-SNAPSHOT.jar.  That's the artifact that I was able to build in core directory.  

I had run "package" not "install."  So I changed back into the core directory and ran "install."  I forgot to add the flag for skipping tests.  This time the tests all passed. Hmm.

So back into the identity directory.  This time no problem.

I changed into the "db" directory.  It installed fine.  

So did the "enterprise" directory.

So did the "simulation" directory.

The "integration" directory failed :
INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/ExpressionEvaluator.java:[29,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/ExpressionEvaluator.java:[55,35] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.runtime.ExpressionEvaluator

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/NodeExecuteInterceptor.java:[26,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/RuntimeContext.java:[29,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/RuntimeContext.java:[42,10] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.runtime.RuntimeContext

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/RuntimeContext.java:[44,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.runtime.RuntimeContext

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/RuntimeContext.java:[49,23] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.runtime.RuntimeContext

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ExclusiveGatewayImpl.java:[26,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[33,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[34,38] package org.jboss.bpm.api.client.Token does not exist

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[146,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[152,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[181,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[186,13] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[191,34] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[191,14] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[34,32] cannot find symbol
symbol : class Token
location: package org.jboss.bpm.api.client

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[52,34] cannot find symbol
symbol: class Token
public class TokenImpl implements Token

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[96,9] cannot find symbol
symbol : class TokenStatus
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[107,13] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[137,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[144,9] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/runtime/NodeExecuteInterceptor.java:[39,4] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.runtime.NodeExecuteInterceptor

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ExclusiveGatewayImpl.java:[75,6] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ExclusiveGatewayImpl.ExclusiveGatewayDecisionHandler

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[51,7] org.jbpm.integration.model.ProcessImpl is not abstract and does not override abstract method cancel() in org.jboss.bpm.api.model.Process

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[91,4] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[94,40] cannot find symbol
symbol : variable TokenStatus
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[161,4] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[193,8] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[193,36] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/model/ProcessImpl.java:[197,11] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.model.ProcessImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[98,4] cannot find symbol
symbol : class TokenStatus
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[98,25] cannot find symbol
symbol : variable TokenStatus
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[101,15] cannot find symbol
symbol : variable TokenStatus
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[109,8] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.client.TokenImpl

[ECLIPSE WORKSPACE DIRECTORY]/jbpm3/modules/integration/spec/src/main/java/org/jbpm/integration/client/TokenImpl.java:[109,41] cannot find symbol
symbol : class Token
location: class org.jbpm.integration.client.TokenImpl


[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12 seconds
[INFO] Finished at: Thu Nov 27 20:40:08 EST 2008
[INFO] Final Memory: 24M/44M
[INFO] ------------------------------------------------------------------------




Getting pretty frustrated, I control clicked the project and ran "Team -> Synchronize with Repository." There were a bunch of updates. The classes I was missing were included. I have no idea how that happened.

I updated and re-ran maven. Success. I changed to the root directory and ran "package" again. Success.

How the hell was I missing sources? Oh well.

Tuesday, November 25, 2008

OSX and JAVA_HOME

Trying to use seam-gen on my new MacBook Pro I got the following error :

The JAVA_HOME environment variable is not set
Please point it to a valid JDK installation

So I ran :

JAVA_HOME=/Library/Java/Home

This article from Apple's site suggested that the home should always point to that symlink. Unfortunately I got the same error.

Running :

java -version

showed only a JRE :

java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)

Running :

$JAVA_HOME/bin/java -version

showed the same thing. So where is this JDK that Apple speaks of?  Its there.  The only thing that I was missing was :

export JAVA_HOME

Oops.

Calendar and date ranges

I hate Java's Calendar and Date apis.  Hopefully JSR 310 will improve things.  

In the meantime, here's a trick for selecting based on a date range :

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR, (cal.get(Calendar.HOUR) - 1));
beforeDate = cal.getTime();
cal.set(Calendar.DATE, (cal.get(Calendar.DATE) - 1));
cal.set(Calendar.HOUR_OF_DAY, 00);
cal.set(Calendar.MINUTE, 00);
cal.set(Calendar.SECOND, 00);
afterDate = cal.getTime();
The beforeDate member variable is set to the current date minus one hour.  Then the cal Calendar instance is set to 12:00 AM the day before.

Friday, November 21, 2008

Dashboard wouldn't start

I got a new MacBook Pro at work.  I'm completely happy about that!

Dashboard quit working.  It might not have ever worked, but I think it did.  After installing a new widget it wouldn't start.

I typed :   defaults write com.apple.dashboard mcx-disabled -boolean NO
Followed by : killall Dock

Dashboard worked fine after that.

I found the answer here.

Wednesday, November 12, 2008

Seam-gen and Oracle Express

I installed Oracle Express.  I created a user, "local," with the creative password, "local."  I created a project with seam-gen.  I created an entity object and annotated the id column with :
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id", unique = true, nullable = false)
private Long id;
On deploy I saw in the logs :
09:42:14,281 INFO  [SchemaExport] exporting generated schema to database
09:42:14,609 ERROR [SchemaExport] Unsuccessful: create table TABLE_NAME (id number(19,0) not null unique, name varchar2(30) not null, description varchar2(200) not null, inputChannel varchar2(100) not null, outputChannel varchar2(100) not null, parser varchar2(100), primary key (id))
09:42:14,609 ERROR [SchemaExport] ORA-02261: such unique or primary key already exists in the table
The message, "such unique or primary key already exists in the table," led me to believe that the table existed.  However, I couldn't see it using the Oracle web interface.  Or SQL Developer.  Or MyEclipse. 

So I ran the statement in the web interface.  Same error. 

The problem turned out to be that the statement was creating the id twice.  First with, "id number(19,0) not null unique," and second with, "primary key (id)."

I changed the syntax, and it worked.  As for the annotations, I removed the "Column" annotation :
@Column(name = "id", unique = true, nullable = false)
When I redeployed it worked fine.

The working annotation was :
@Id
@SequenceGenerator(name = "TABLE_NAME_SEQUENCE_GENERATOR", sequenceName = "TABLE_NAME_SEQUENCE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TABLE_NAME_SEQUENCE_GENERATOR")
private Long id;

Tuesday, October 21, 2008

JBossWS Eclipse JUnit Error

I played with JBossWS for the first time this evening. I'm runningEclipse with JBossTools installed. It was easy enough to compile (Ant task) and import the project into Eclipse.

However, when I ran the tests I got a "Java Virtual Machine Error." The popup read "Could not find the main class. Program will exit." There's an post about this in the JBoss forums but no answer.

The tests run from Ant (even within Eclipse.) While running the tests from the command line a second time I noticed the following message :

tests-prepare: [echo] [echo] ----------------------------------------------- [echo] jboss.home = C:/tools/servers/jboss/jboss-4.2.3.GA [echo] excludesfile = C:\tools\jbossws\jbossws-native-3.0.4.GA\jbossws-native-bin-dist/tests/resources/test-exclude s-jboss423.txt [echo] java.home = C:\tools\java\j2se5.0u16\jre

It's pointing to the jre of my java home for some reason. I check the environment variable by running, echo %JAVA_HOME%, but it is pointing to the base install not just the jre.

Searching through the project for "jre" doesn't return anything. I hate to give up before I find a solution, but I had stuff to get done.

I ran the "ant eclipse" task again and imported into a fresh Eclipse install. No problem running the tests.

I'll try to reproduce and file a Jira issue. I thought I'd post this just in case anyone else is banging their head against the same wall.



Thursday, October 16, 2008

Running Eclipse in a full JDK

After installing the Maven plugin I got a warning that Eclipse should run in a full jdk.  The solution is really simple (and on the Eclipse wiki), and I was kind of surprised I hadn't run into this before.

Simply add the following to eclipse.ini (found in the Eclipse install folder) :
-vm
path-to-your-jdk (C:\tools\java\j2se5.0u16\bin\javaw.exe for example)

 
Blogged with the Flock Browser

Thursday, September 25, 2008

gVim

Want to change your font in gVim?  Here's how.  I love the title of that page, "Troubleshooters.com and T.C Linux Library Present Permananetly Changing Your Graphical Vim Font"

If you want to change the color scheme, edit your _vimrc file on Windows, which is located in :  C:\Program Files\Vim.  Simply add "colors [name of the color theme you want to use]."  The themes themselves can be found in C:\Program Files\Vim\vim72\colors.  I like "darkblue."
Blogged with the Flock Browser

Seam-gen, HSQLDB and development schemas

I like using HSQLDB's in memory db for early development.  Changes the annotations on my entities and letting hbm2ddl create the schema (tables actually which is what this post is about) for me is way useful.  One of the best things about Seam IMHO.

I ran into an error in my curent project which I set up using seam-gen and giving it a schema name of "PROJECTDEV."  After creating an entity class, "Job" I ran "seam generate-ui" from my project directory.  I deployed expecting to see the default crud screens that seam generates.  However, when I clicked on the "Job List" link I got an error.  The console told me something was wrong with my schema :

Caused by: java.sql.SQLException: invalid schema name in statement

And looking further back in the logs I found error messages from Seam while the schema export was running:

[SchemaExport] invalid schema name: PROJECTDEV in statement

Poking around the web I found some references to this problem on the Hibernate forums, JBoss forums and JBoss Jira

I tried putting :

CREATE SCHEMA PROJECTDEV AUTHORIZATION DBA;

in my import.sql file, but that didn't work.  Same errors.

I had to create the schema manually in the HSQLDB database manager (I have a post on how to use this if you don't already know how.)  After that everything worked fine.
Blogged with the Flock Browser

Friday, September 19, 2008

DBUnit and slf4j

I had never heard of slf4j before this morning, and I have no idea why.  I'm usually pretty up on stuff.

I started to pull some test data with dbunit ( in case you aren't familiar with dbunit here's an excellent intro by Bill Siggelkow ), and when I ran it I got the following error :

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.dbunit.database.AbstractDatabaseConnection.<clinit>(AbstractDatabaseConnection.java:46)
    at [my package and class].main(DBUnitExporter.java:62)

The solution is to download slf4j, and add slf4j-api-1.5.2.jar and slf4j-log4j12-1.5.2.jar to the classpath (I'm using Eclipse so I threw it in the run dialog.)
Blogged with the Flock Browser

Monday, July 21, 2008

HIbernate join tables or xref tables or cross reference tables or cross-reference tables

I just spent a bit of time figuring out how to do bidirectional one-to-many mappings that are associated with a join table / xref / cross reference / cross-reference (I'm spelling all of these out in the event that some other poor soul is searching those terms) and exist in separate schemas.

Its actually spelled out (not the separate schema part, but that's easy) on the hibernate site which shouldn't be surprising since its an excellent site.

There are two tricks to making this work :
  1. Map the children into the parent as a many-to-many, but set "unique='true'" in the mapping.
  2. Map the join table into the child object.

In my case this meant something along the lines of this in the parent :
<set name="children" table="XREF" schema="PARENT_SCHEMA"
lazy="false" inverse="true">
<key column="XREF_PARENT_ID" not-null="true" />
<many-to-many unique="true" column="XREF_CHILD_ID" class="com.jeremyrdavis.Child" />
</set>

And this in the child :
<join table="PARENT_SCHEMA.XREF" inverse="true" optional="true" >
<key column="XREF_CHILD_ID" not-null="true" />
<many-to-one name="group" column="XREF_PARENT_ID" not-null="true"></many-to-one>
</join>


Blogged with the Flock Browser

Wednesday, July 16, 2008

Terracotta at July's AJUG

Last Tuesday's AJUG (that's the Atlanta Java User's Group) presentation by Kunal Bhasin, a field engineer at Terracotta, ruled.  First of all, Kunal did a bang up job of fielding a ton of questions, and most of crowd stayed around an extra half hour for his presentation.  Second, Terracotta has a seriously cool app.  

I've attend AJUG regularly (meaning most of them) for the past few years.  Burr Sutter who runs AJUG and is the product manager for JBoss ESB does a great job with the speakers, but there have been a few that really stand out.  I got introduced to both Hibernate and Spring (although I had read about Hibernate previously) a few years back at AJUG meetings, and on both occasions got the feeling that those technologies were not only worth using but would be really big.  I got a similar impression about Terracotta; although, its nothing like either Hibernate or Spring.  Its actually pretty invisible to developers, which is the point.

In a nutshell (echoes of O'Reilly?) Terracotta's server(s) controls the objects for numerous JVMs allowing applications from each to access the same instances without any special apis.   I'm sure there's plenty of information on their site, and if you are an architect or have had to worry about clustering, caching or scaling then check it out.  They have separate sites for the commercial and open source versions (a lot like JBoss.com and JBoss.org - is this going to be the standard for oss business models now?)

Bill Sengstacken, who is in marketing, is going to post a video, and there should be a link on the AJUG site at some point.

Wednesday, June 4, 2008

Excellent post about Seam and Google bots

I haven't blogged in ages so it is pretty lame to simply link to someone else's post; however, this is an excellent piece of work. 

Its about dealing with Google bots that can crash a Seam site.
Blogged with the Flock Browser

Wednesday, April 30, 2008

'findstr' is not recognized as an internal or external command

I got this error starting JBoss from a dos prompt today :

'findstr' is not recognized as an internal or external command

I guess I had been using the ide more than usual since re-imaging my laptop.  The problem was pretty easily resolved thanks to this post on JBoss wiki.

I added C:\WINDOWS\system32 to my PATH variable and everything booted.
Blogged with the Flock Browser

Friday, April 25, 2008

Printing Arrays in Groovy

While working through the arrays page of the Getting Started Guide at the Groovy codehaus site, I stumbled upon some interesting behaviour. I was adding "print" statements to the following block of code :
assert a as List == ['a', 2, 'c', false] 
so that I ended up with :

print
"\na as List : " + a as List

The result wasn't what I expected :
["\n", "a", " ", "a", "s", " ", "L", "i", "s", "t", " ", ":", " ", "{", "\"", "a", "\"", ",", " ", "2", ",", " ", "\"", "f", "o", "o", "\"", ",", " ", "f", "a", "l", "s", "e", "}"] I added parentheses around the "a as List" and got what I expected : a as List : ["a", 2, "foo", false] Simple lesson : pay attention to precedence! That or drink coffee first thing in the morning.

Also, turning the whole string into a list that easily is cool.
Blogged with the Flock Browser

Friday, April 18, 2008

Netbeans Keyboard Shortcuts

I've been using Netbeans some recently after a the Sun Tech Days (Atlanta) and an AJUG presentation on Glassfish. Barry Hawkins' announcement at last night's (April) AJUG meeting about upcoming Python support really piqued my interest and made me decide to get comfortable using it.

My biggest annoyance when switching IDEs is not knowing the keyboard shortcuts. I despise the mouse and keep it on the left side of my desk (I'm right handed) - a Neal Ford suggestion. There is a pdf of shortcuts accessible from Netbeans' help menu, but there is a more complete list available on their wiki.
Blogged with the Flock Browser

Tuesday, April 8, 2008

Google AppEngine

New Google AppEngine!

Sweet, couldn't wait to use it. I started the tutorial during lunch. I downloaded and installed Python and the AppEngine. Then I created a work directory, "C:\google_workspace" and a helloworld folder, "C:\google_workspace\helloworld" just like the tutorial said to do, created the files "helloworld.py" and "app.yaml" just like in the tutorial, and fired up the dev_appserver with, "C:\google_workspace\helloworld>dev_appserver.py helloworld\". Instead of "Hello, world!" I got :

C:\google_workspace\helloworld>dev_appserver.py helloworld/
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 50, in
<module>
execfile(script_path, globals())
File "C:\Program Files\Google\google_appengine\google/appengine/tools/dev_apps
erver_main.py", line 338, in <module>
sys.exit(main(sys.argv))
File "C:\Program Files\Google\google_appengine\google/appengine/tools/dev_apps
erver_main.py", line 287, in main
config, matcher = dev_appserver.LoadAppConfig(root_path, {})
File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_apps
erver.py", line 2415, in LoadAppConfig
raise AppConfigNotFoundError
google.appengine.tools.dev_appserver.AppConfigNotFoundError

Hmm. I ran through a mental checklist before diving into the code (I knew I was being lazy. I was also really looking forward to diving into the code, but I wanted to at least get the thing running first.)
  • Perhaps I should've installed somewhere other than "C:\Program Files" I don't usually put anything in there.
  • Apparently I had Tomcat running which would be blocking 80 (I usually set Tomcat to 80 and JBoss to 8080).
Neither of those made a difference. "I, d, ten, t" error - I was running the wrong file.

Running, "C:\google_workspace\helloworld>dev_appserver.py ./" started the server.

The first line was a prompt, "Allow dev_appserver to check for updates on startup? (Y/n):"
Naturally I said "Y", and I liked name of the config file which was conveniently printed out on the next line, "dev_appserver will check for updates on startup. To change this setting, edit C
:\Documents and Settings\jdavis/.appcfg_nag"

I saw "Hello, world!"

I can't wait to start using this. Now I can finally build a completely scalable side project to make myself rich without spending any money out of pocket! Actually, I can finally stop putting off learning Python.
Blogged with the Flock Browser

Thursday, February 28, 2008

Hibernate reverse engineering and "yes_no" columns

Since attending JBossWorld Orlando, I've been playing with the JBoss Developer Studio. I've had some problems with reverse generation of my entities, and so I thought I'd post some of the solutions.

My database uses logical deletes ("Y" and "N".) The generated entities, which were typed as Boolean's choked on insert.

I haven't had much luck yet customizing the generation from the JBoss Developer Studio menu , and so I've been using the Hibernate Tools for Eclipse to generate my entities into a separate project, ModelProject, and then copying them into a seam project.

My plan was to use Seam tools to generate the crud ui from the project. However, right clicking the project and choosing "New -> Seam Generate Entities" and then selecting "Use existing entities" didn't do anything.

I started over and did the following :
ran seam-gen from the command line and created a new project, SeamProject
imported the resulting project into Eclipse
copied the reverse-engineered entities from ModelProject into SeamProject
ran "seam generate-ui" from the command line

This worked beautifully. The only hitch was I kept getting a vague error from DB2/400 when I tried to create a new entity, "[SQL0545] INSERT or UPDATE not allowed by CHECK constraint."

I checked all the constraints and after a few failed attempts determined that I wasn't violating any foreign keys. There were only a couple of not null fields one of which was the logical delete column. I had entered the translation I wanted into the hibernate.reveng.xml file (or at least I thought I had), but there was no annotation for "yes_no." I simply added @Type(type="yes_no") to the field, and everything worked.

Blogged with Flock

Friday, February 15, 2008

JBoss World Orlando - Friday

EJB3, Seam, JSF, and RichFaces on JBoss 4.2.0 was the first session I attended. It was a case study of easycredit a German loan system. I've found the case studies useful.

The second session I attended was a 90 minute JBoss Developer Studio workshop. I had already installed the JBoss Tools project into Eclipse so I was glancingly familiar with it; however, I've used seam-gen for the projects I've been working on and hadn't made use of the Developer Studio tooling. Reverse engineering a domain model is stupidly simple.

Agile Development Using JBoss Seam was the third session I attended. Daniel Hinojosa was the speaker, and he had some cool tips on using Groovy for unit testing that I want to check out. He also showed off some stuff that I didn't know Hudson could do.

Testing JSF Applications which was an intro to JSFUnit by Stan Silvert was another session that I really liked, meaning I will start using JSFUnit next week. The executive summary is that resulting from his hatred of Mock objects, Stan created a JSF testing framework that works inside the the container without all the overhead of Cactus.

Some Other JBossWorld Bloggers

Daniel Hinojosa is currently speaking (I'm in his seminar now) and blogging about the show on his evolutionnext blog.

Thursday, February 14, 2008

JBoss World Orlando - Thursday

Introduction into JBoss Drools and the Business Rules Management System (BRMS) by Mark Proctor was the first session I attended.

Drools/JBoss rules is really cool. The web based BRMS system looks very nice, and offloading the maintenance to the business users is a must anyway. I'll be using this soon.

I found the keynote by Vefim Natis from Gartner interesting. Although I am way tired of hearing about SOA I still got a lot out of his talk. Some of his points :
  • Gartner's hype cycle currently puts SOA entering mainstream acceptance.
  • SOA is primarily about business modeling : identifying the business components that need to be developed as software.
  • Establishment of an Integration/SOA Competency Center (ICC) is the barometer of success
  • Heterogenous software/environments are not only necessary, but should be regarded as a goal.
The Hibernate Search session was impressive. Emmanuel Bernard, the project's team lead was the presenter. I didn't have a lot of experience using Lucene (one project a few years ago), but it looked like they've done a nice job wrapping Lucene and providing an API that should be familiar to Hibernate users.

Wednesday, February 13, 2008

JBoss World Orlando - Wednesday

I'm at JBossWorld Orlando. We got the usual t-shirt and bag, but the 1G flash drive was definitely the best schwag I've picked up (I didn't take a single pen during the vendor meet and greet!)

I checked out the jBPM session, "A Lightweight Approach to Business Processes With JBoss jBPM", first. I would've liked more practical use information, but the overview of the jBPM platform, which is how Tom Bayens described it, was interesting.

The next session on "Seam, SEAM, AS, EJB3, Hibernate, AJAX4JSF, RichFaces, and Facelets", was given by four guys from Big Lots. It was an excellent talk. I don't know how much presenting they do, but they traded off easily and kept the talk moving really well. It didn't hurt that their case study was very relevant to the project I'm working on.

Thursday, January 31, 2008

Server did not start after 50s

I got this error while starting up JBoss from Eclipse, 3.3 with the latest JBoss Tools installed (I haven't shelled out the $100 for Red Hat Developer Studio.)

"Timeout waiting for JBOSS 4.2 to start. Server did not start after 50s."

At December's AJUG meeting I saw a demonstration of Glassfish starting in under a minute, which was seriously impressive. However, Eclipse can't be pimping Glassfish, and while I am interested in giving Glassfish a look, I need this running now. Besides, I like JBoss.

I deleted a couple of the ear files that I wasn't working on, but I kept getting the timeout error. A quick Google, and I located the following folders in my EclipseDist\plugins directory :
  • org.eclipse.jst.server.generic.jboss_1.5.102.v20070608
  • org.eclipse.jst.server.generic.jboss_1.5105.v200709061325.
I edited the plugin.xml in the org.eclipse.jst.server.generic.jboss_1.5105.v200709061325 folder. The relevant parts were the serverType entries, startTimeout parameters.

<extension point="org.eclipse.wst.server.core.serverTypes">
<serverType
runtime="true"
class="org.eclipse.jst.server.generic.core.internal.GenericServer"
id="org.eclipse.jst.server.generic.jboss323"
initialState="stopped"
supportsRemoteHosts="false"
runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss323"
description="%jboss323serverTypeDescription"
launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
name="%jboss323serverTypeName"
startTimeout="50000"
stopTimeout="15000"
hasConfiguration="false"
launchModes="run,debug,profile">
</serverType>
<serverType
runtime="true"
class="org.eclipse.jst.server.generic.core.internal.GenericServer"
id="org.eclipse.jst.server.generic.jboss4"
initialState="stopped"
supportsRemoteHosts="false"
runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss4"
description="%jboss4serverTypeDescription"
launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
name="%jboss4serverTypeName"
startTimeout="50000"
stopTimeout="15000"
hasConfiguration="false"
launchModes="run,debug,profile">
</serverType>
<serverType
runtime="true"
class="org.eclipse.jst.server.generic.core.internal.GenericServer"
id="org.eclipse.jst.server.generic.jboss42"
initialState="stopped"
supportsRemoteHosts="false"
runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss42"
description="%jboss42serverTypeDescription"
launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
name="%jboss42serverTypeName"
startTimeout="50000"
stopTimeout="15000"
hasConfiguration="false"
launchModes="run,debug,profile">
</serverType>
<serverType
runtime="true"
class="org.eclipse.jst.server.generic.core.internal.GenericServer"
id="org.eclipse.jst.server.generic.jboss5"
initialState="stopped"
supportsRemoteHosts="false"
runtimeTypeId="org.eclipse.jst.server.generic.runtime.jboss5"
description="%jboss5serverTypeDescription"
launchConfigId="org.eclipse.jst.server.generic.core.launchConfigurationType"
behaviourClass="org.eclipse.jst.server.generic.core.internal.GenericServerBehaviour"
name="%jboss5serverTypeName"
startTimeout="50000"
stopTimeout="15000"
hasConfiguration="false"
launchModes="run,debug,profile">
</serverType>
</extension>

I changed the values to 180000 ms and JBoss booted just fine.

Blogged with Flock