[jboss-cvs] JBossAS SVN: r94012 - in projects/embedded/trunk: api/src/main/java and 16 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 24 21:37:46 EDT 2009
Author: ALRubinger
Date: 2009-09-24 21:37:45 -0400 (Thu, 24 Sep 2009)
New Revision: 94012
Added:
projects/embedded/trunk/api/src/main/java/org/
projects/embedded/trunk/api/src/main/java/org/jboss/
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java
projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java
Removed:
projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/incubation/
projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java
projects/embedded/trunk/testsuite/src/test/java/org/jboss/embedded/test/
Modified:
projects/embedded/trunk/api/pom.xml
projects/embedded/trunk/assembly/embedded-assembly.xml
projects/embedded/trunk/assembly/pom.xml
projects/embedded/trunk/build/pom.xml
projects/embedded/trunk/core/pom.xml
projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java
projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java
projects/embedded/trunk/testsuite-full-dep/pom.xml
projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java
projects/embedded/trunk/testsuite/pom.xml
projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java
Log:
[EMB-50] Separation of Embedded components to support a JBOSS_HOME-backed run mode
Modified: projects/embedded/trunk/api/pom.xml
===================================================================
--- projects/embedded/trunk/api/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/api/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,13 +27,26 @@
<properties>
<!-- Versioning -->
+ <version.org.jboss.bootstrap_jboss.bootstrap.api.as>2.0.0-SNAPSHOT</version.org.jboss.bootstrap_jboss.bootstrap.api.as>
-
</properties>
<!-- Dependencies -->
<dependencies>
+ <!-- org.jboss.bootstrap:jboss-bootstrap-api-as -->
+ <dependency>
+ <groupId>org.jboss.bootstrap</groupId>
+ <artifactId>jboss-bootstrap-api-as</artifactId>
+ <version>${version.org.jboss.bootstrap_jboss.bootstrap.api.as}</version>
+ </dependency>
+
+ <!-- org.jboss.tmpdpl:tmpdpl-impl-vdf -->
+ <dependency>
+ <groupId>org.jboss.tmpdpl</groupId>
+ <artifactId>tmpdpl-impl-vdf</artifactId>
+ </dependency>
+
</dependencies>
</project>
Copied: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java (from rev 93960, projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java)
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServer.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.embedded.api.server;
+
+import org.jboss.bootstrap.api.as.config.JBossASServerConfig;
+import org.jboss.bootstrap.api.as.server.JBossASBasedServer;
+import org.jboss.tmpdpl.api.container.Container;
+
+
+/**
+ * JBossASEmbeddedServer
+ *
+ * Contract of the JBoss Application Server as seen by clients
+ * wishing to embed into an existing runtime
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public interface JBossASEmbeddedServer
+ extends
+ JBossASBasedServer<JBossASEmbeddedServer, JBossASServerConfig>,
+ Container
+{
+
+}
Added: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/JBossASEmbeddedServerFactory.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.embedded.api.server;
+
+import org.jboss.bootstrap.api.as.server.JBossASServerFactory;
+
+/**
+ * JBossASEmbeddedServerFactory
+ *
+ * Stateless factory used in constructing new {@link JBossASEmbeddedServer}
+ * instances. Does not leak internals and allows the client compilation and
+ * runtime classpath (application ClassLoader) to be free of the
+ * implementation classes.
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+public class JBossASEmbeddedServerFactory
+{
+
+ //-------------------------------------------------------------------------------------||
+ // Class Members ----------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * The FQN of the default server implementation class to create
+ */
+ public static final String DEFAULT_SERVER_IMPL_CLASS_NAME = "org.jboss.embedded.core.server.JBossASEmbeddedServerImpl";
+
+ //-------------------------------------------------------------------------------------||
+ // Constructor ------------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Constructor, should not be used
+ *
+ * @throws UnsupportedOperationException If invoked
+ */
+ private JBossASEmbeddedServerFactory()
+ {
+ // No access
+ throw new UnsupportedOperationException("No instances permitted");
+ }
+
+ //-------------------------------------------------------------------------------------||
+ // Factory Methods --------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Creates a JBossASEmbeddedServer from the default implementation class name
+ * {@link JBossASEmbeddedServerFactory#DEFAULT_SERVER_IMPL_CLASS_NAME}, using the
+ * Thread Context ClassLoader. The returned server will additionally be created using
+ * the TCCL.
+ *
+ * @return The newly-created Server
+ */
+ public static JBossASEmbeddedServer createServer()
+ {
+ return createServer(SecurityActions.getTccl());
+ }
+
+ /**
+ * Creates a JBossASEmbeddedServer from the default implementation class name
+ * {@link JBossASEmbeddedServerFactory#DEFAULT_SERVER_IMPL_CLASS_NAME}, using the
+ * specified ClassLoader. The returned server will additionally be created using
+ * the ClassLoader denoted.
+ *
+ * @param cl The ClassLoader used to create the new server instance
+ * @throws IllegalArgumentException If the ClassLoader is null
+ * @return The newly-created Server
+ */
+ public static JBossASEmbeddedServer createServer(final ClassLoader cl) throws IllegalArgumentException
+ {
+ try
+ {
+ return JBossASServerFactory.createServer(DEFAULT_SERVER_IMPL_CLASS_NAME, cl, JBossASEmbeddedServer.class);
+ }
+ catch (final InstantiationException ie)
+ {
+ // Should really only be encountered if the impl class name above is wrong, so don't expose
+ // this as a checked exception to the user, wrap in a runtime exception
+ throw new RuntimeException("Server instance could not be created", ie);
+ }
+ }
+
+}
Added: projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java
===================================================================
--- projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java (rev 0)
+++ projects/embedded/trunk/api/src/main/java/org/jboss/embedded/api/server/SecurityActions.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.embedded.api.server;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
+/**
+ * SecurityActions
+ *
+ * Utility class for security actions, so as to provide
+ * some centralization without leaking privileged actions
+ *
+ * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @version $Revision: $
+ */
+class SecurityActions
+{
+
+ //-------------------------------------------------------------------------------------||
+ // Constructor ------------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * In place to prevent instantiation
+ */
+ private SecurityActions()
+ {
+ }
+
+ //-------------------------------------------------------------------------------------||
+ // Utility Methods --------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Obtains the Thread Context ClassLoader
+ *
+ * @return
+ */
+ static ClassLoader getTccl()
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
+ {
+
+ public ClassLoader run()
+ {
+ // Return the TCCL
+ return Thread.currentThread().getContextClassLoader();
+ }
+
+ });
+ }
+}
Modified: projects/embedded/trunk/assembly/embedded-assembly.xml
===================================================================
--- projects/embedded/trunk/assembly/embedded-assembly.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/assembly/embedded-assembly.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -4,7 +4,7 @@
-->
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
- <id>embedded</id>
+ <id>launcher</id>
<formats>
<format>jar</format>
</formats>
@@ -12,38 +12,13 @@
<dependencySets>
<dependencySet>
<unpack>true</unpack>
- <unpackOptions>
- <includes>
- <include>org/jboss/bootstrap/spi/**</include>
- </includes>
- </unpackOptions>
<includes>
- <include>org.jboss.bootstrap:jboss-bootstrap-spi</include>
+ <include>org.jboss.bootstrap:jboss-bootstrap-api-as</include>
+ <include>org.jboss.bootstrap:jboss-bootstrap-api</include>
+ <include>org.jboss.embedded:jboss-embedded-api</include>
+ <include>org.jboss.tmpdpl:tmpdpl-api</include>
</includes>
</dependencySet>
- <dependencySet>
- <unpack>true</unpack>
- <unpackOptions>
- <includes>
- <include>org/jboss/bootstrap/spi/as/config/JBossASConfigurationInitializer*</include>
- <include>org/jboss/bootstrap/spi/as/config/JBossASServerConfig*</include>
- </includes>
- </unpackOptions>
- <includes>
- <include>org.jboss.bootstrap:jboss-bootstrap-spi-as</include>
- </includes>
- </dependencySet>
- <dependencySet>
- <unpack>true</unpack>
- <unpackOptions>
- <includes>
- <include>org/jboss/bootstrap/spi/mc/config/MCBasedServerConfig*</include>
- </includes>
- </unpackOptions>
- <includes>
- <include>org.jboss.bootstrap:jboss-bootstrap-spi-mc</include>
- </includes>
- </dependencySet>
</dependencySets>
<fileSets>
<fileSet>
Modified: projects/embedded/trunk/assembly/pom.xml
===================================================================
--- projects/embedded/trunk/assembly/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/assembly/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -62,35 +62,17 @@
<!-- Dependencies -->
<dependencies>
-
- <!--
-
- Note: jboss-bootstrap may NOT be leaked as a dependency
- anywhere in this chain. This will muss up the ClassLoading
- needed to run in Embedded mode (as server will be created
- using wrong ClassLoader)
-
+ <!-- org.jboss.embedded:jboss-embedded-core -->
+ <!--
+ Don't export this dependency; mark as optional
-->
-
<dependency>
- <groupId>org.jboss.bootstrap</groupId>
- <artifactId>jboss-bootstrap-impl-as</artifactId>
- <optional>true</optional>
- </dependency>
-<!--
- <dependency>
<groupId>org.jboss.embedded</groupId>
<artifactId>jboss-embedded-core</artifactId>
+ <optional>true</optional>
<version>${version.org.jboss.embedded_jboss.embedded.core}</version>
- - We cannot export the jboss-bootstrap dependency -
- <exclusions>
- <exclusion>
- <groupId>org.jboss.bootstrap</groupId>
- <artifactId>jboss-bootstrap-impl-as</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- -->
+ </dependency>
+
</dependencies>
</project>
Modified: projects/embedded/trunk/build/pom.xml
===================================================================
--- projects/embedded/trunk/build/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/build/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
+ <!--
vi:ts=2:sw=2:expandtab:
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+
<!-- Parent -->
<parent>
<groupId>org.jboss.jbossas</groupId>
@@ -23,23 +22,24 @@
<name>JBossAS Embedded Build</name>
<description>JBoss Application Server Embedded Build</description>
<packaging>pom</packaging>
-
+
<!-- Properties -->
<properties>
-
+
<!-- Versioning -->
<version.junit_junit>4.6</version.junit_junit>
- <version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs>0.1.0-SNAPSHOT</version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs>
+ <version.org.jboss.jbossas>5.2.0-SNAPSHOT</version.org.jboss.jbossas>
+ <version.org.jboss.shrinkwrap_shrinkwrap.impl.base>0.1.0-SNAPSHOT</version.org.jboss.shrinkwrap_shrinkwrap.impl.base>
<version.org.jboss.tmpdpl_tmpdpl.impl.vdf>0.1.0-SNAPSHOT</version.org.jboss.tmpdpl_tmpdpl.impl.vdf>
-
+
</properties>
-
+
<!-- SCM -->
<scm>
<connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/embedded/trunk</connection>
<developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/embedded/trunk</developerConnection>
<url>http://anonsvn.jboss.org/repos/jbossas/projects/embedded/trunk</url>
- </scm>
+ </scm>
<!-- Issues -->
<issueManagement>
@@ -76,7 +76,7 @@
<executable>${JAVA_HOME}/bin/javac</executable>
</configuration>
</plugin>
-
+
<!-- Surefire -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
@@ -89,9 +89,10 @@
<include>**/*TestSuite.java</include>
</includes>
<forkMode>always</forkMode>
- <!-- Required to bump the space for relective data like
- classes, methods, etc. EMB-41
--->
+ <!--
+ Required to bump the space for relective data like classes,
+ methods, etc. EMB-41
+ -->
<argLine>-XX:MaxPermSize=256m</argLine>
</configuration>
</plugin>
@@ -104,8 +105,8 @@
<tagBase>https://svn.jboss.org/repos/jbossas/projects/embedded/tags</tagBase>
</configuration>
</plugin>
-
- <!-- Enforce Maven Environment -->
+
+ <!-- Enforce Maven Environment -->
<plugin>
<artifactId>maven-enforcer-plugin
</artifactId>
@@ -137,58 +138,72 @@
<dependencyManagement>
<dependencies>
+ <!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${version.junit_junit}</version>
<scope>test</scope>
</dependency>
-
+
+ <!-- Deployable Containers (groupId and artifactId will change) -->
<dependency>
<groupId>org.jboss.tmpdpl</groupId>
<artifactId>tmpdpl-impl-vdf</artifactId>
<version>${version.org.jboss.tmpdpl_tmpdpl.impl.vdf}</version>
</dependency>
+ <!-- ShrinkWrap (Declarative Archives) -->
<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
- <artifactId>shrinkwrap-impl-vfs</artifactId>
- <version>${version.org.jboss.shrinkwrap_shrinkwrap.impl.vfs}</version>
+ <artifactId>shrinkwrap-impl-base</artifactId>
+ <version>${version.org.jboss.shrinkwrap_shrinkwrap.impl.base}</version>
</dependency>
+
+ <!-- AS modules and 3rdparty deps -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-build</artifactId>
+ <version>${version.org.jboss.jbossas}</version>
+ <type>pom</type>
+ </dependency>
+
+ <!-- JBossAS Client assembly
- <!--
- TODO: Remove
- This is just until all deps for bootstrap are updated
+ This one is for runtime. We really want just compile-time.
+
+ Plus it leaks in A LOT.
+
<dependency>
- <groupId>org.jboss.bootstrap</groupId>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-client</artifactId>
+ <version>${version.org.jboss.jbossas}</version>
+ <scope>test</scope>
+ <type>pom</type>
+ </dependency>
+
+ -->
+
+ <!--
+ TODO: Remove This is just until all deps for bootstrap are
+ updated <dependency> <groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-impl-as</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
<groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-impl-mc</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
<groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-impl-base</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
<groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-spi</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
<groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-spi-as</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
- <dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency> <dependency>
<groupId>org.jboss.bootstrap</groupId>
<artifactId>jboss-bootstrap-spi-mc</artifactId>
- <version>2.0.0-SNAPSHOT</version>
- </dependency>
+ <version>2.0.0-SNAPSHOT</version> </dependency>
-->
</dependencies>
Modified: projects/embedded/trunk/core/pom.xml
===================================================================
--- projects/embedded/trunk/core/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,80 +27,36 @@
<properties>
<!-- Versioning -->
- <version.org.jboss.jbossas>5.2.0-SNAPSHOT</version.org.jboss.jbossas>
+ <version.org.jboss.embedded_jboss.embedded.api>0.1.0-SNAPSHOT
+ </version.org.jboss.embedded_jboss.embedded.api>
+ <version.org.jboss.bootstrap_jboss.bootstrap.impl.as>2.0.0-alpha-4
+ </version.org.jboss.bootstrap_jboss.bootstrap.impl.as>
- <!--
- TODO: Properties below this line should be ultimately removed as
- these dependencies should be provided as part of the AS dependency
- chain
- -->
-
- <version.jboss.web>2.1.3.GA</version.jboss.web>
- <version.jboss.messaging>1.4.3.GA</version.jboss.messaging>
- <version.org.slf4j_slf4j.jboss.logging>1.0.2.GA</version.org.slf4j_slf4j.jboss.logging>
-
</properties>
<!-- Dependencies -->
<dependencies>
+ <!-- org.jboss.embedded:jboss.embedded.api -->
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <groupId>org.jboss.embedded</groupId>
+ <artifactId>jboss-embedded-api</artifactId>
+ <version>${version.org.jboss.embedded_jboss.embedded.api}</version>
</dependency>
+ <!-- org.jboss.bootstrap:jboss-bootstrap-impl-as -->
<dependency>
- <groupId>org.jboss.tmpdpl</groupId>
- <artifactId>tmpdpl-impl-vdf</artifactId>
+ <groupId>org.jboss.bootstrap</groupId>
+ <artifactId>jboss-bootstrap-impl-as</artifactId>
+ <version>${version.org.jboss.bootstrap_jboss.bootstrap.impl.as}</version>
</dependency>
- <!-- AS modules and 3rdparty deps -->
+ <!-- JUnit -->
<dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-build</artifactId>
- <version>${version.org.jboss.jbossas}</version>
- <type>pom</type>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
</dependency>
- <!--
- Deps in the runtime of AS but *not* part of the AS dependency tree
-
- TODO: Get these represented by the AS build dependency chain
- JBAS-7267
- -->
-
- <dependency>
- <groupId>org.jboss.jbossas</groupId>
- <artifactId>jboss-as-management</artifactId>
- <version>${version.org.jboss.jbossas}</version>
- <classifier>jsr77</classifier>
- </dependency>
- <dependency>
- <groupId>jboss.web</groupId>
- <artifactId>jsp-api</artifactId>
- <version>${version.jboss.web}</version>
- </dependency>
- <dependency>
- <groupId>jboss.web</groupId>
- <artifactId>el-api</artifactId>
- <version>${version.jboss.web}</version>
- </dependency>
- <dependency>
- <groupId>jboss.web</groupId>
- <artifactId>jasper-jdt</artifactId>
- <version>${version.jboss.web}</version>
- </dependency>
- <dependency>
- <groupId>jboss.messaging</groupId>
- <artifactId>jboss-messaging</artifactId>
- <version>${version.jboss.messaging}</version>
- </dependency>
- <dependency>
- <groupId>org.jboss.slf4j</groupId>
- <artifactId>slf4j-jboss-logging</artifactId>
- <version>${version.org.slf4j_slf4j.jboss.logging}</version>
- </dependency>
-
</dependencies>
</project>
Modified: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/lifecycle/SetSysPropIfNotSpecifiedLifecycleEventHandler.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -21,9 +21,9 @@
*/
package org.jboss.embedded.core.lifecycle;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventException;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventHandler;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventException;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventHandler;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
import org.jboss.logging.Logger;
/**
Deleted: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServer.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -1,43 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.embedded.core.server;
-
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.as.server.JBossASBasedServer;
-import org.jboss.tmpdpl.api.container.Container;
-
-/**
- * JBossASEmbeddedServer
- *
- * Contract of the JBoss Application Server as seen by clients
- * wishing to embed into an existing runtime
- *
- * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
- * @version $Revision: $
- */
-public interface JBossASEmbeddedServer
- extends
- JBossASBasedServer<JBossASEmbeddedServer, JBossASServerConfig>,
- Container
-{
-
-}
Modified: projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java
===================================================================
--- projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/core/src/main/java/org/jboss/embedded/core/server/JBossASEmbeddedServerImpl.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -27,15 +27,16 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
+import org.jboss.bootstrap.api.as.config.JBossASServerConfig;
+import org.jboss.bootstrap.api.lifecycle.LifecycleEventHandler;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
import org.jboss.bootstrap.impl.as.config.BasicJBossASServerConfig;
import org.jboss.bootstrap.impl.as.server.AbstractJBossASServerBase;
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleEventHandler;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
import org.jboss.dependency.spi.ControllerContext;
import org.jboss.dependency.spi.ControllerState;
import org.jboss.deployers.client.spi.Deployment;
import org.jboss.deployers.client.spi.main.MainDeployer;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
import org.jboss.embedded.core.lifecycle.IgnoreXbUnorderedSequenceLifecycleEventHandler;
import org.jboss.embedded.core.lifecycle.InitLoggingManagerLifecycleEventHandler;
import org.jboss.embedded.core.lifecycle.SetRmiHostnameLifecycleEventHandler;
Modified: projects/embedded/trunk/testsuite/pom.xml
===================================================================
--- projects/embedded/trunk/testsuite/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -25,6 +25,9 @@
<!-- Versioning -->
<version.org.jboss.embedded_jboss.embedded.assembly>0.1.0-SNAPSHOT</version.org.jboss.embedded_jboss.embedded.assembly>
+ <version.org.apache.httpcomponents_httpclient>4.0-beta2</version.org.apache.httpcomponents_httpclient>
+ <version.org.jboss.javaee_jboss.jms.api>1.1.0.GA</version.org.jboss.javaee_jboss.jms.api>
+ <version.org.jboss.javaee_jboss.persistence.api>3.0.0.CR1</version.org.jboss.javaee_jboss.persistence.api>
</properties>
@@ -35,27 +38,50 @@
<groupId>org.jboss.embedded</groupId>
<artifactId>jboss-embedded-assembly</artifactId>
<version>${version.org.jboss.embedded_jboss.embedded.assembly}</version>
- <classifier>embedded</classifier>
+ <classifier>launcher</classifier>
<scope>test</scope>
</dependency>
-
+
<dependency>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-log4j</artifactId>
+ <groupId>org.jboss.embedded</groupId>
+ <artifactId>jboss-embedded-testsuite-fulldep</artifactId>
+ <classifier>tests</classifier>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.shrinkwrap</groupId>
+ <artifactId>shrinkwrap-impl-base</artifactId>
<scope>test</scope>
</dependency>
+ <!-- Apache HttpClient -->
<dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>${version.org.apache.httpcomponents_httpclient}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
-
+
<dependency>
- <groupId>gnu-getopt</groupId>
- <artifactId>getopt</artifactId>
- <version>1.0.13</version>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-jms-api</artifactId>
+ <version>${version.org.jboss.javaee_jboss.jms.api}</version>
+ <scope>test</scope>
</dependency>
-
+
+ <dependency>
+ <groupId>org.jboss.javaee</groupId>
+ <artifactId>jboss-persistence-api</artifactId>
+ <version>${version.org.jboss.javaee_jboss.persistence.api}</version>
+ <scope>test</scope>
+ </dependency>
+
</dependencies>
</project>
Modified: projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java
===================================================================
--- projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite/src/test/java/org/jboss/ServerTestCase.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -19,41 +19,76 @@
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
+//FIXME We have to be in org.jboss due to JMX getPackage in AS
package org.jboss;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.InputStreamReader;
+import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.logging.Logger;
+import javax.jms.Queue;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.QueueSender;
+import javax.jms.QueueSession;
+import javax.jms.TextMessage;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import junit.framework.Assert;
import junit.framework.TestCase;
-import org.jboss.bootstrap.spi.as.config.JBossASConfigurationInitializer;
-import org.jboss.bootstrap.spi.as.config.JBossASServerConfig;
-import org.jboss.bootstrap.spi.factory.ServerFactory;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
-import org.jboss.bootstrap.spi.server.Server;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.NameValuePair;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.utils.URIUtils;
+import org.apache.http.client.utils.URLEncodedUtils;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.message.BasicNameValuePair;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
+import org.jboss.embedded.api.server.JBossASEmbeddedServerFactory;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.Jbossian;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarBean;
+import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarLocalBusiness;
+import org.jboss.embedded.testsuite.fulldep.ejb3.mdb.MessageStoringMdb;
+import org.jboss.embedded.testsuite.fulldep.ejb3.slsb.OutputBean;
+import org.jboss.embedded.testsuite.fulldep.ejb3.slsb.OutputLocalBusiness;
+import org.jboss.embedded.testsuite.fulldep.servlet.JspForwardingServlet;
+import org.jboss.shrinkwrap.api.JavaArchiveFactory;
+import org.jboss.shrinkwrap.api.Path;
+import org.jboss.shrinkwrap.api.WebArchiveFactory;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.impl.base.path.BasicPath;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
/**
- * ServerUnitTestCase
+ * ServerTestCase
*
- * Don't even begin to consider this a real test :D
- * It's essentially all the logic of what Embedded Core will
- * provide in one unified place.
+ * The beginnings of the prototype for an end-user view
+ * of the Embedded Server. Tests here should include lifecycle
+ * to start/stop the server, and checks to ensure that
+ * subsystems are working as expected.
*
* This is the initial prototype for Embedded AS to run
- * with a minimal AS Dependency Set upon the Application
- * ClassLoader. The deps are defined by the Embedded assembly,
- * which closely matches run.jar in the traditional
- * AS setup.
- *
- * Most of the logic in this class has been pulled from AS Main.
- *
- * We also have a series of nasty test-only hacks here until
- * everything's past the prototyping phase and in some fully-working
- * order.
+ * with a full AS Dependency Set upon the Application
+ * ClassLoader. The deps are defined by pom.xml and its parents.
*
* @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
* @version $Revision: $
@@ -66,28 +101,89 @@
//-------------------------------------------------------------------------------||
/**
+ * Logger
+ */
+ private static final Logger log = Logger.getLogger(ServerTestCase.class.getName());
+
+ /**
* The server instance
*/
- private static Server<?, ?> server;
+ private static JBossASEmbeddedServer server;
- private static final String DEFAULT_AS_SERVER_IMPL_CLASS_NAME = "org.jboss.bootstrap.impl.as.server.JBossASServerImpl";
+ /**
+ * Path, relative to the resources base, of a test web.xml
+ */
+ private static final String PATH_ACTUAL_WEB_XML = "webxml/servletForwardingToJsp.xml";
- @Deprecated
- //FIXME Hack
- private static final String HARDCODED_JBOSS_HOME = "/home/alrubinger/business/jboss/wc/jbossas/branches/Branch_5_x/build/output/jboss-5.2.0.Beta/";
+ /**
+ * Filename of a test queue *-service.xml
+ */
+ private static final String FILENAME_QUEUE_SERVICE_XML = "mdb-queue-service.xml";
/**
- * Stupid ol' boot library list
+ * Path, relative to the resources base, of a test queue *-service.xml
*/
+ private static final String PATH_QUEUE_SERVICE_XML = "queues/" + FILENAME_QUEUE_SERVICE_XML;
+
+ /**
+ * Path, relative to the resources base, of a test JSP
+ */
+ private static final String PATH_JSP = "jsp/requestParamEcho.jsp";
+
+ /**
+ * Path, relative to the resources base, of a persistence.xml file for Embedded DataSource
+ */
+ private static final String PATH_RESOURCE_PERSISTENCE_XML_EMBEDDED = "persistence/persistenceEmbedded.xml";
+
+ /**
+ * Path, relative to the deployment root, of a persistence.xml file
+ */
+ private static final String PATH_DESTINATION_PERSISTENCE_XML = "persistence.xml";
+
+ /**
+ * Path, relative to the resources base, of the directory containing DataSource resources
+ */
+ private static final String PATH_RESOURCE_DS_XMLs = "datasources/";
+
+ /**
+ * Filename of the Embedded DataSource deployment XML
+ */
+ private static final String FILENAME_EMBEDDED_DS = "embedded-ds.xml";
+
+ /**
+ * Path, relative to the resources base, of the directory containing DataSource resources
+ */
+ private static final String PATH_RESOURCE_DS_XML_EMBEDDED = PATH_RESOURCE_DS_XMLs + FILENAME_EMBEDDED_DS;
+
+ /**
+ * Separator character within archives
+ */
+ private static final char SEPARATOR = '/';
+
+ /**
+ * The JNDI Context
+ */
+ private static Context NAMING_CONTEXT;
+
+ /**
+ * Name of the Queue Connection Factory in JNDI
+ */
+ private static final String JNDI_NAME_CONNECTION_FACTORY = "ConnectionFactory";
+
+ /**
+ * JNDI name suffix appended to local business EJB3 views
+ */
+ private static final String JNDI_SUFFIX_LOCAL_BUSINESS = "/local";
+
+
+ //FIXME Remove this
@Deprecated
- //FIXME We need to have the endorsed libs here? Why not accepted from java.endorsed.dirs?
- private static final String[] DEFAULT_BOOT_LIBRARY_LIST =
+ public static final String[] DEFAULT_BOOT_LIBRARY_LIST =
{
// Concurrent
"concurrent.jar",
// Logging
- "log4j-boot.jar",
- "jboss-logging-spi.jar",
+ "log4j-boot.jar", "jboss-logging-spi.jar",
"jboss-logging-log4j.jar",
"jboss-logging-jdk.jar",
"jboss-logmanager.jar",
@@ -97,127 +193,371 @@
"jboss-xml-binding.jar",
// Bootstrap
"jboss-bootstrap-spi.jar", "jboss-bootstrap-spi-as.jar", "jboss-bootstrap-spi-mc.jar",
- "jboss-bootstrap-impl-base.jar",
- "jboss-bootstrap-impl-as.jar",
- "jboss-bootstrap-impl-mc.jar",
+ "jboss-bootstrap-impl-base.jar", "jboss-bootstrap-impl-as.jar",
+ "jboss-bootstrap-impl-mc.jar","jboss-bootstrap-api-as.jar","jboss-bootstrap-api-mc.jar",
+ "jboss-bootstrap-api.jar",
// Microcontainer
"javassist.jar", "jboss-reflect.jar", "jboss-mdr.jar", "jboss-dependency.jar", "jboss-kernel.jar",
- "jboss-metatype.jar",
- "jboss-managed.jar",
+ "jboss-metatype.jar", "jboss-managed.jar",
// Fixme ClassLoading
"jboss-vfs.jar", "jboss-classloading-spi.jar", "jboss-classloader.jar", "jboss-classloading.jar",
"jboss-classloading-vfs.jar",
// Fixme aop
- "jboss-aop.jar", "jboss-aop-mc-int.jar", "trove.jar",
- // Endorsed
- "endorsed/jaxb-api.jar", "endorsed/xercesImpl.jar", "endorsed/activation.jar", "endorsed/jaxb-api.jar",
- "endorsed/resolver.jar", "endorsed/serializer.jar", "endorsed/stax-api.jar", "endorsed/xalan.jar"};
+ "jboss-aop.jar", "jboss-aop-mc-int.jar", "trove.jar",};
+
//-------------------------------------------------------------------------------||
- // Tests ------------------------------------------------------------------------||
+ // Lifecycle --------------------------------------------------------------------||
//-------------------------------------------------------------------------------||
/**
- * Ensures that the server reports as running
+ * Starts up the Application Server. Relies upon either Environment
+ * Variable "JBOSS_HOME" or System Property "jboss.home" being set, with
+ * precedence to the system property
*/
- @Test
- public void testServerStart() throws Throwable
+ @BeforeClass
+ public static void startEmbedddedASAndSetNamingContext() throws Exception
{
- System.setProperty("xb.builder.useUnorderedSequence", Boolean.TRUE.toString());
- System.setProperty("java.rmi.server.hostname", "localhost");
- final String propKeyJBossasBindAddress = JBossASServerConfig.PROP_KEY_JBOSSAS_BIND_ADDRESS;
- final String defaultBindAddress = "127.0.0.1";
- System.setProperty(propKeyJBossasBindAddress, defaultBindAddress);
+ final Set<URL> urls = new HashSet<URL>();
+ final String jbossHome = System.getenv("JBOSS_HOME");
+ if (jbossHome == null || jbossHome.length() == 0)
+ {
+ throw new IllegalStateException("JBOSS_HOME is not set");
+ }
+ log.info("JBOSS_HOME: " + jbossHome);
+ final File jbossHomeFile = new File(jbossHome);
+ final URL jbossHomeUrl = jbossHomeFile.toURI().toURL();
+ final URL jbossLib = new URL(jbossHomeUrl, "lib/");
+ final URL jbossBin = new URL(jbossHomeUrl, "bin/");
+ log.info("JBOSS Lib: " + jbossLib);
+
+
+ final File libDir = new File(jbossLib.toURI());
+// final File[] libs = libDir.listFiles();
+// for (final File lib : libs)
+// {
+// urls.add(lib.toURI().toURL());
+// }
+
+ for(final String libName:DEFAULT_BOOT_LIBRARY_LIST)
+ {
+ urls.add(new URL(jbossLib,libName));
+ }
+ final URL runJar = new URL(jbossBin,"run.jar");
+ urls.add(runJar);
+
+ final URL[] urlarray = urls.toArray(new URL[]{});
+
+ final URLClassLoader urlcl = new URLClassLoader(urls.toArray(new URL[]
+ {}));
+ log.info("URLs: " + urls);
+ log.info("Number of URLs: " + urlarray.length);
+
+ // Set TCCL to the URLCL
+ final ClassLoader oldCl = SecurityActions.getThreadContextClassLoader();
+ SecurityActions.setThreadContextClassLoader(urlcl);
+
+ final URL[] roundtripURls = urlcl.getURLs();
+ log.info("Number of URLs: " + roundtripURls.length);
+// final String className="org.jboss.bootstrap.impl.as.server.AbstractJBossASServerBase";
+ final String className = "org.jboss.bootstrap.impl.mc.server.AbstractMCServerBase";
+ Class<?> clazz = Class.forName(className, false, urlcl);
+ ClassLoader loading = clazz.getClassLoader();
+ log.info("Got:"+clazz + " via: " + loading + ", tried via: " + urlcl);
- // Initialize the JDK logmanager
- String name = System.getProperty("java.util.logging.manager");
- if (name == null)
+ // Make Server (will pull JBOSS_HOME from env var or sys prop)
+ server = JBossASEmbeddedServerFactory.createServer(urlcl);
+
+ try
{
- System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
+ log.info("Created: " + server);
+
+ // Start
+ log.info("Starting Server: " + server);
+ server.start();
+ log.info("...started.");
+
+ // Set Naming Context
+ NAMING_CONTEXT = new InitialContext();
}
+ finally
+ {
+ SecurityActions.setThreadContextClassLoader(oldCl);
+ }
+ }
- final String jbossHome = HARDCODED_JBOSS_HOME;
- final String jbossLib = jbossHome + "lib";
+ /**
+ * Shuts down the Application Server after the suite ends
+ */
+ @AfterClass
+ public static void stopEmbeddedAS() throws Exception
+ {
+ // If exists and started
+ if (server != null && server.getState().equals(LifecycleState.STARTED))
+ {
+ // Shutdown
+ log.info("Shutting down server: " + server);
+ server.shutdown();
+ }
- final Set<URL> urls = new HashSet<URL>();
+ }
- for (String filename : DEFAULT_BOOT_LIBRARY_LIST)
+ //-------------------------------------------------------------------------------||
+ // Tests ------------------------------------------------------------------------||
+ //-------------------------------------------------------------------------------||
+
+ /**
+ * Tests EJB3 Stateless Session Beans via a virtual archive
+ * deployment
+ */
+ @Test
+ public void testSlsb() throws Exception
+ {
+ // Log
+ log.info("testSlsb");
+
+ // Make a deployment
+ final String name = "slsb.jar";
+ final JavaArchive archive = JavaArchiveFactory.create(name).addClasses(OutputBean.class,
+ OutputLocalBusiness.class);
+ log.info(archive.toString(true));
+ // Deploy
+ server.deploy(archive);
+
+ // Test
+ final OutputLocalBusiness bean = (OutputLocalBusiness) NAMING_CONTEXT.lookup(OutputBean.class.getSimpleName()
+ + JNDI_SUFFIX_LOCAL_BUSINESS);;
+ final String output = bean.getOutput();
+ log.info("Got output: " + output);
+ Assert.assertEquals(OutputLocalBusiness.OUTPUT, output);
+
+ // Undeploy
+ server.undeploy(archive);
+
+ }
+
+ /**
+ * Tests deployment of a virtual WAR containing a servlet
+ * and JSP.
+ *
+ * The Servlet will forward to the JSP path denoted by request param
+ * "jsp". The JSP will echo the value of request param "echo".
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testWarServletJsp() throws Exception
+ {
+ // Log
+ log.info("testWarServletJsp");
+
+ // Make a deployment
+ final String appName = "testServletJsp";
+ final String name = appName + ".war";
+ final Class<?> servletClass = JspForwardingServlet.class;
+ final WebArchive archive = WebArchiveFactory.create(name);
+ final Path targetPathWebXml = new BasicPath("web.xml");
+ archive.addWebResource(targetPathWebXml, PATH_ACTUAL_WEB_XML).addResource(PATH_JSP).addClass(servletClass);
+ log.info(archive.toString(true));
+
+ // Deploy
+ server.deploy(archive);
+
+ // Get an HTTP Client
+ final HttpClient client = new DefaultHttpClient();
+
+ // Make an HTTP Request
+ final String echoValue = "EmbeddedBiatch";
+ final List<NameValuePair> params = new ArrayList<NameValuePair>();
+ params.add(new BasicNameValuePair("jsp", PATH_JSP));
+ params.add(new BasicNameValuePair("echo", echoValue));
+ final URI uri = URIUtils.createURI("http", "localhost", 8080, appName + SEPARATOR + servletClass.getSimpleName(),
+ URLEncodedUtils.format(params, "UTF-8"), null);
+ final HttpGet request = new HttpGet(uri);
+
+ // Execute the request
+ log.info("Executing request to: " + request.getURI());
+ final HttpResponse response = client.execute(request);
+ final HttpEntity entity = response.getEntity();
+ if (entity == null)
{
- final File bootLibFile = new File(jbossLib, filename);
- if (!bootLibFile.exists())
- {
- System.out.println("WARNING: Could not find expected boot lib " + bootLibFile);
- }
- final URL bootLibUrl = bootLibFile.toURI().toURL();
- urls.add(bootLibUrl);
+ TestCase.fail("Request returned no entity");
}
- /*
- * Set boot log directory
- */
- final String sysPropBootLogDir = "jboss.boot.server.log.dir";
- final String sysPropLogDir = JBossASServerConfig.PROP_KEY_JBOSSAS_SERVER_LOG_DIR;
- String serverName = System.getProperty(JBossASServerConfig.PROP_KEY_JBOSSAS_SERVER_NAME);
- if (serverName == null || serverName.length() == 0)
+ // Read the result, ensure it's what we're expecting (should be the value of request param "echo")
+ final BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
+ final String line = reader.readLine();
+ log.info("Got response: " + line);
+ Assert.assertEquals(echoValue, line);
+
+ // Undeploy
+ server.undeploy(archive);
+ }
+
+ /**
+ * Tests deployment of a JMS Queue with EJB3 MDB Listener
+ *
+ * The MDB will simply store the text of the message in a publicly-accessible
+ * static field
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testJmsAndMdb() throws Exception
+ {
+ // Log
+ log.info("testJmsAndMdb");
+
+ // Create a virtual archive for the MDB deployment
+ final String name = "jms-mdb-test.jar";
+ final JavaArchive archive = JavaArchiveFactory.create(name);
+ final Path queuesTargetPath = new BasicPath(FILENAME_QUEUE_SERVICE_XML);
+ archive.addClass(MessageStoringMdb.class).addResource(queuesTargetPath, PATH_QUEUE_SERVICE_XML);
+
+ // Deploy
+ log.info(archive.toString(true));
+ server.deploy(archive);
+
+ // Define a String message to send
+ final String message = "From in-JVM Test Message";
+
+ // Send the message
+ this.sendTextMessageToQueue(message, MessageStoringMdb.NAME_QUEUE);
+
+ // Wait on the MDB to process
+ try
{
- serverName = JBossASConfigurationInitializer.VALUE_SERVER_NAME_DEFAULT;
+ MessageStoringMdb.BARRIER.await(10, TimeUnit.SECONDS);
}
- final String manualBootLogDir = System.getProperty(sysPropBootLogDir);
- final String manualLogDir = System.getProperty(sysPropLogDir);
- // If nothing's been explicitly specified
- if (manualBootLogDir == null && manualLogDir == null)
+ catch (final InterruptedException e)
{
- // We default it
- final File jbossHomeFile = new File(jbossHome);
- final URL jbossHomeUrl = jbossHomeFile.toURI().toURL();
- final URL serverLog = new URL(jbossHomeUrl, "server/" + serverName + "/log/");
- final File serverLogFile = new File(serverLog.toURI());
- final String serverLogString = serverLogFile.getAbsolutePath();
- System.setProperty(sysPropBootLogDir, serverLogString);
+ // Clear the flag
+ Thread.interrupted();
+ // Throw up
+ throw e;
}
- // If we've got a manual log dir, use it
- else if (manualLogDir != null)
+ catch (final TimeoutException e)
{
- System.setProperty(sysPropBootLogDir, manualLogDir);
+ TestCase.fail("The MDB did not process the message in the allotted time");
}
- final URL[] urlArray = urls.toArray(new URL[]
- {});
+ // Get the contents of the String from the MDB
+ final String received = MessageStoringMdb.LAST_MESSAGE_CONTENTS;
- final Thread currentThread = Thread.currentThread();
- final ClassLoader oldCl = currentThread.getContextClassLoader();
+ // Ensure equal
+ Assert.assertEquals("The test message received was not as expected", message, received);
- final ClassLoader loadingCl = new URLClassLoader(urlArray, oldCl);
+ // Undeploy
+ server.undeploy(archive);
- // Make Server
- server = ServerFactory.createServer(DEFAULT_AS_SERVER_IMPL_CLASS_NAME, loadingCl);
+ }
- // Get out the default configuration
- // This cast to object first is to workaround the JDK Bug: http://bugs.sun.com/view_bug.do?bug_id=6548436
- final Object jdk6Bug6548436Hack = (Object) server.getConfiguration();
- JBossASServerConfig config = (JBossASServerConfig) jdk6Bug6548436Hack;
+ /**
+ * Tests deployment of a JCA DataSource and EJB3 Entity Bean (JPA)
+ *
+ * A test SLSB will also be used to create a few rows in the DB,
+ * then obtain all.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testDataSourceAndEntity() throws Exception
+ {
+ // Log
+ log.info("testDataSourceAndEntity");
- // Set JBOSS_HOME
- config.jbossHome(jbossHome);
+ // Create a virtual archive for DS, persistence.xml, Entity, and SLSB
+ final String name = "datasource-entity-test.jar";
+ final Path targetDsPath = new BasicPath(FILENAME_EMBEDDED_DS); //TODO Use factory when available
+ final Path targetPersistencePath = new BasicPath(PATH_DESTINATION_PERSISTENCE_XML); //TODO Use factory when available
+ final JavaArchive archive = JavaArchiveFactory.create(name);
+ archive.addClasses(Jbossian.class, JbossianRegistrarLocalBusiness.class, JbossianRegistrarBean.class)
+ .addResource(targetDsPath, PATH_RESOURCE_DS_XML_EMBEDDED).addManifestResource(targetPersistencePath,
+ PATH_RESOURCE_PERSISTENCE_XML_EMBEDDED);
- currentThread.setContextClassLoader(loadingCl);
- try
- {
- // Start
- server.start();
+ // Deploy
+ log.info(archive.toString(true));
+ server.deploy(archive);
- final LifecycleState state = server.getState();
- final LifecycleState expected = LifecycleState.STARTED;
- TestCase.assertEquals("The server is not reporting as started", expected, state);
+ // Make some JBossians
+ final Jbossian jgreene = new Jbossian("Jason T. Greene", "AS Hole", 12);
+ final Jbossian jpederse = new Jbossian("Jesper Pedersen", "Professional Tattletale", 21);
+ final Jbossian dmlloyd = new Jbossian("David M. Lloyd", "???????", 15);
+ final Jbossian wolfc = new Jbossian("Carlo de Wolf", "Superlead", 13);
+ final Jbossian alr = new Jbossian("Andew Lee Rubinger", "The New Fluery", 58);
+ final Jbossian asaldhan = new Jbossian("Anil Saldhana", "Karma Police", 23);
- // Shutdown
- server.shutdown();
+ // Get an SLSB to interact w/ the DB
+ final JbossianRegistrarLocalBusiness slsb = (JbossianRegistrarLocalBusiness) NAMING_CONTEXT
+ .lookup(JbossianRegistrarBean.class.getSimpleName() + JNDI_SUFFIX_LOCAL_BUSINESS);
+
+ // Add the JBossians
+ slsb.add(jgreene);
+ slsb.add(jpederse);
+ slsb.add(dmlloyd);
+ slsb.add(wolfc);
+ slsb.add(alr);
+ slsb.add(asaldhan);
+
+ // Get all
+ final Collection<Jbossian> jbossians = slsb.getAllJbossians();
+ log.info("Got all JBossians: " + jbossians);
+
+ // Test
+ Assert.assertEquals(6, jbossians.size());
+
+ // Undeploy
+ server.undeploy(archive);
+ }
+
+ //-------------------------------------------------------------------------------------||
+ // Internal Helper Methods ------------------------------------------------------------||
+ //-------------------------------------------------------------------------------------||
+
+ /**
+ * Sends a JMS {@link TextMessage} containing the specified contents to the
+ * queue of the specified name
+ *
+ * @param contents
+ * @param queueName
+ * @throws Exception
+ * @throws IllegalArgumentException If either argument is not provided
+ */
+ private void sendTextMessageToQueue(final String contents, final String queueName) throws Exception,
+ IllegalArgumentException
+ {
+ // Precondition check
+ if (contents == null || contents.length() == 0)
+ {
+ throw new IllegalArgumentException("contents must be provided");
}
- finally
+ if (queueName == null || queueName.length() == 0)
{
- currentThread.setContextClassLoader(oldCl);
+ throw new IllegalArgumentException("queueName must be provided");
}
+ // Get the queue from JNDI
+ final Queue queue = (Queue) NAMING_CONTEXT.lookup(queueName);
+
+ // Get the ConnectionFactory from JNDI
+ final QueueConnectionFactory factory = (QueueConnectionFactory) NAMING_CONTEXT
+ .lookup(JNDI_NAME_CONNECTION_FACTORY);
+
+ // Make a Connection
+ final QueueConnection connection = factory.createQueueConnection();
+ final QueueSession sendSession = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+
+ // Make the message
+ final TextMessage message = sendSession.createTextMessage(contents);
+
+ // Send the message
+ final QueueSender sender = sendSession.createSender(queue);
+ sender.send(message);
+ log.info("Sent message " + message + " with contents: " + contents);
+
+ // Clean up
+ sendSession.close();
+ connection.close();
}
}
Modified: projects/embedded/trunk/testsuite-full-dep/pom.xml
===================================================================
--- projects/embedded/trunk/testsuite-full-dep/pom.xml 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite-full-dep/pom.xml 2009-09-25 01:37:45 UTC (rev 94012)
@@ -28,8 +28,37 @@
<version.org.jboss.embedded_jboss.embedded.core>0.1.0-SNAPSHOT</version.org.jboss.embedded_jboss.embedded.core>
<version.org.apache.httpcomponents_httpclient>4.0-beta2</version.org.apache.httpcomponents_httpclient>
+ <!--
+ TODO: Properties below this line should be ultimately removed as
+ these dependencies should be provided as part of the AS dependency
+ chain
+ -->
+
+ <version.jboss.web>2.1.3.GA</version.jboss.web>
+ <version.jboss.messaging>1.4.3.GA</version.jboss.messaging>
+ <version.org.slf4j_slf4j.jboss.logging>1.0.2.GA</version.org.slf4j_slf4j.jboss.logging>
+
</properties>
+ <build>
+
+ <!-- Make a Test JAR (temporary, used by testsuite component) -->
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+
+ </build>
+
<!-- Dependencies -->
<dependencies>
@@ -41,9 +70,10 @@
<scope>test</scope>
</dependency>
+ <!-- ShrinkWrap -->
<dependency>
<groupId>org.jboss.shrinkwrap</groupId>
- <artifactId>shrinkwrap-impl-vfs</artifactId>
+ <artifactId>shrinkwrap-impl-base</artifactId>
<scope>test</scope>
</dependency>
@@ -61,6 +91,52 @@
<scope>test</scope>
</dependency>
+ <!-- AS modules and 3rdparty deps -->
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-build</artifactId>
+ <type>pom</type>
+ </dependency>
+
+ <!--
+ Deps in the runtime of AS but *not* part of the AS dependency tree
+
+ TODO: Get these represented by the AS build dependency chain
+ JBAS-7267
+ -->
+
+ <dependency>
+ <groupId>org.jboss.jbossas</groupId>
+ <artifactId>jboss-as-management</artifactId>
+ <version>${version.org.jboss.jbossas}</version>
+ <classifier>jsr77</classifier>
+ </dependency>
+ <dependency>
+ <groupId>jboss.web</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>${version.jboss.web}</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss.web</groupId>
+ <artifactId>el-api</artifactId>
+ <version>${version.jboss.web}</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss.web</groupId>
+ <artifactId>jasper-jdt</artifactId>
+ <version>${version.jboss.web}</version>
+ </dependency>
+ <dependency>
+ <groupId>jboss.messaging</groupId>
+ <artifactId>jboss-messaging</artifactId>
+ <version>${version.jboss.messaging}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.slf4j</groupId>
+ <artifactId>slf4j-jboss-logging</artifactId>
+ <version>${version.org.slf4j_slf4j.jboss.logging}</version>
+ </dependency>
+
</dependencies>
</project>
Modified: projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java
===================================================================
--- projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java 2009-09-25 01:03:19 UTC (rev 94011)
+++ projects/embedded/trunk/testsuite-full-dep/src/test/java/org/jboss/embedded/testsuite/fulldep/ServerTestCase.java 2009-09-25 01:37:45 UTC (rev 94012)
@@ -52,8 +52,8 @@
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
-import org.jboss.bootstrap.spi.lifecycle.LifecycleState;
-import org.jboss.embedded.core.server.JBossASEmbeddedServer;
+import org.jboss.bootstrap.api.lifecycle.LifecycleState;
+import org.jboss.embedded.api.server.JBossASEmbeddedServer;
import org.jboss.embedded.core.server.JBossASEmbeddedServerImpl;
import org.jboss.embedded.testsuite.fulldep.ejb3.entity.Jbossian;
import org.jboss.embedded.testsuite.fulldep.ejb3.entity.JbossianRegistrarBean;
@@ -264,14 +264,12 @@
// Log
log.info("testWarServletJsp");
- // Get the path to the test web.xml file and JSP
- final Path targetPathWebXml = new BasicPath("web.xml");
-
// Make a deployment
final String appName = "testServletJsp";
final String name = appName + ".war";
final Class<?> servletClass = JspForwardingServlet.class;
final WebArchive archive = WebArchiveFactory.create(name);
+ final Path targetPathWebXml = new BasicPath("web.xml");
archive.addWebResource(targetPathWebXml, PATH_ACTUAL_WEB_XML).addResource(PATH_JSP).addClass(servletClass);
log.info(archive.toString(true));
More information about the jboss-cvs-commits
mailing list