Embedded Glassfishについて誰か知っていますか? EJB テストのいくつかを実行したいのですが、テストを実行するたびに Glassfish-embedded を開始および停止したくありません。
プラグインのドキュメントによると、これを POM に入れる必要があります。
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.1</version>
<configuration>
<app>target/ejbcontainer-1.0-SNAPSHOT.jar</app>
<name>test</name>
<ports>
<http-listener>8080</http-listener>
<https-listener>8181</https-listener>
</ports>
</configuration>
<executions>
<execution>
<goals>
<goal>start</goal>
<goal>deploy</goal>
<goal>undeploy</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<skip>true</skip>
</configuration>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
</configuration>
</execution>
</executions>
</plugin>
これはすべて良いです。この埋め込まれたグラスフィッシュを「実行」できます。コンソールにこれが表示され、稼働中であることが証明されます。
情報: テストは 1,124 ミリ秒で正常にデプロイされました。PlainTextActionReporterSUCCESSDescription: deploy AdminCommandApplication は test という名前でデプロイされました。[name=test Dec 16, 2013 6:03:29 PM PluginUtil doDeploy 情報: デプロイされたテスト ENTER を押して再デプロイし、X を押して終了します
ただし、テスト ファイルを「実行」すると、埋め込まれたグラスフィッシュの新しいインスタンスが作成されます。
テスト ファイルが、現在実行中のコンテナーを取得していません。
これが役立つ場合のテストファイルは次のとおりです。
public class Test extends TestCase {
private Context ctx;
private EJBContainer ejbContainer;
public Test(String testName) {
super(testName);
}
@BeforeClass
public void setUp() {
ejbContainer = EJBContainer.createEJBContainer();
System.out.println("Opening the container");
ctx = ejbContainer.getContext();
}
@AfterClass
@Override
public void tearDown() {
ejbContainer.close();
System.out.println("Closing the container");
}
@org.junit.Test
public void testApp() throws Exception {
TemperatureConverter converter = (TemperatureConverter) ctx.lookup("java:global/classes/TemperatureConverter");
assertNotNull(converter);
}
}