1

私のEJBプロジェクトは以下の構造を持ち、Mavenを使用してパッケージ化されています。ejbがcore.jarファイルにパッケージ化されています。リモートルックアップは、jar (core-common.jar)としてパッケージ化された別のプロジェクト内のすべてのインターフェイスとPOJOを移動し、依存関係としてWebモジュールに追加して、リモートEJB呼び出しに使用できるようにすることで可能になりました。

├── core.jar
├── app_war
│   ├── META-INF
│   └── WEB-INF       
├── lib
    └──core-common.jar

アプリケーションをデプロイするとIllegalAccessException - access denied、コアがPOJOのいずれかをインスタンス化しようとしたときに終了しますcore-common.jar。POJOまたはクラスのいずれにもプライベートメソッドまたはコンストラクターはありません。これは私を困惑させました。

また、過去にこれらのPOJOにはコンストラクターprotectedがあり、POJOとインターフェイスを階層化するためにリファクタリングした後、すべてを公開することにしました。

リファクタリング後にこの違法なアクセスを引き起こしている可能性があるものを誰かが知っていますか?アプリケーションはGlassfishにデプロイされます。

4

1 に答える 1

0

何時間にもわたる苦痛と喜びもなくウェブを掘り下げた後、私はクラスをからcore-common.jarパッケージにフィルタリングすることにしましたcore。これで修正されました。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>resource-dependencies</id>
                    <phase>compile</phase>
                    <goals>
                        <goal>unpack-dependencies</goal>
                    </goals>
                    <configuration>
                        <includeGroupIds>net.proj-alkaline</includeGroupIds>
                        <includeArtifactIds>core-common</includeArtifactIds>
                        <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                        <includes>**/*</includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
于 2013-02-21T18:14:34.500 に答える