2017-11-05 1 views
1

私のMavenプロジェクト構造は次のようになります。@PostConstructメソッドは、別のモジュールの依存関係

私はこのようになります私のEJBモジュールでのEJB持っている:私の問題はsayHello()メソッドが2回実行されていることということである

@Startup 
@Singleton 
public class StartupBean { 

    @PersistenceContext 
    private EntityManager em; 

    @PostConstruct 
    private void sayHello() { 
     System.out.println("HELLO !!!"); 
    } 
    } 

を。ここで

は、ログからの出力です:

00:16:13,803 INFO [stdout] (ServerService Thread Pool -- 113) HELLO !!! 
00:16:13,803 INFO [stdout] (ServerService Thread Pool -- 117) HELLO !!! 

マイEJBモジュールは、私のWebモジュールの依存関係です。

依存関係を削除すると、正常に機能します(メソッドは一度呼び出す必要があります)。

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.testing</groupId> 
     <artifactId>test_project</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>test_project-web</artifactId> 
    <packaging>war</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>${project.groupId}</groupId> 
      <artifactId>test_project-ejb</artifactId> 
      <version>${test_project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
     </dependency> 
    </dependencies> 

</project> 

注:

私のWebモジュールののpom.xmlは次のようになり、私はすべての関連記事を読んでいると私は私のエラーが見つかりませ答え

答えて

1

は認められませんでした。依存関係の方法はlibフォルダ内のwarアーカイブ内にパッケージ化されていたので、私は依存関係の範囲を提供するように変更する必要がありました。したがって、基本的に、私のejbモジュールは2回展開され、@PostConstructメソッドの2回の実行が行われました。

Webモジュールpom.xml内のejb依存関係に<scope>provided</scope>を追加しても問題ありません。 ejbモジュールはwarアーカイブのlibフォルダ内にパッケージされなくなり、@PostConstructメソッドは一度だけ呼び出されます。

関連する問題