deploy vritual jar failed on embedded jboss
liuxiaodu Apr 29, 2008 3:27 PMHello,
I am trying to use embedded jboss to test my EJB3 session bean. It is failed on the vritual jar deployment.
I am using maven2 + jdk1.5.
The error message:
-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 23, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 6.429 sec <<< FAILURE!
startup(com.westernasset.calendar.CalendarServiceBeanTest) Time elapsed: 0 sec <<< FAILURE!
java.lang.RuntimeException: Unable to deploy
at com.westernasset.calendar.EJB3Container.deploy(EJB3Container.java:66)
at com.westernasset.calendar.EJB3Container.startup(EJB3Container.java:24)
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:597)
at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:398)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:145)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:82)
at org.testng.TestRunner.beforeRun(TestRunner.java:490)
at org.testng.TestRunner.run(TestRunner.java:458)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:301)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:296)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:276)
at org.testng.SuiteRunner.run(SuiteRunner.java:191)
at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:808)
at org.testng.TestNG.runSuitesLocally(TestNG.java:776)
at org.testng.TestNG.run(TestNG.java:701)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:62)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:141)
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:597)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
Caused by: org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
*** CONTEXTS IN ERROR: Name -> Error
vfs://12094970850210/ -> java.lang.AssertionError: expected a jar or file url, but was vfs://12094970850210/
at com.westernasset.calendar.EJB3Container.deploy(EJB3Container.java:65)
... 27 more
Caused by: org.jboss.deployers.client.spi.IncompleteDeploymentException: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS):
*** CONTEXTS IN ERROR: Name -> Error
vfs://12094970850210/ -> java.lang.AssertionError: expected a jar or file url, but was vfs://12094970850210/
at com.westernasset.calendar.EJB3Container.deploy(EJB3Container.java:65)
... 27 more
Please help.
Thanks.
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>hibernate-all</artifactId>
<version>beta3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>jboss-embedded-all</artifactId>
<version>beta3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.seam.embedded</groupId>
<artifactId>thirdparty-all</artifactId>
<version>beta3</version>
<scope>test</scope>
</dependency>
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.embedded.Bootstrap;
import org.jboss.virtual.plugins.context.vfs.AssembledContextFactory;
import org.jboss.virtual.plugins.context.vfs.AssembledDirectory;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
public class EJB3Container {
private static boolean globalSetup = false;
private static AssembledDirectory jar;
@BeforeTest
protected void startup() {
if (globalSetup) {
return;
}
try {
Bootstrap.getInstance().bootstrap();
deploy();
} catch (DeploymentException e) {
e.printStackTrace();
}
}
@AfterTest
protected void shutdown() {
if (globalSetup) {
return;
}
undeploy();
}
private void deploy() {
jar = AssembledContextFactory.getInstance().create("ejbTest.jar");
jar.addClass(BusinessCalendar.class);
jar.addClass(BusinessCalendarDate.class);
jar.addClass(CalendarService.class);
jar.addClass(CalendarServiceSessionBean.class);
jar.addClass(Holiday.class);
jar.addClass(HolidayCalendar.class);
jar.addClass(HolidayHandlerType.class);
jar.mkdir("META-INF").addResource("testPersistence.xml", "persistence.xml");
try {
Bootstrap.getInstance().deploy(jar);
} catch (DeploymentException e) {
e.fillInStackTrace();
throw new RuntimeException("Unable to deploy", e);
}
}
private static void undeploy() {
try {
Bootstrap.getInstance().undeploy(jar);
AssembledContextFactory.getInstance().remove(jar);
} catch (DeploymentException e) {
throw new RuntimeException("Unable to undeploy", e);
}
}
}