访问EJB分离的接口时出现IllegalAccessException

时间:2013-02-20 23:19:18

标签: java maven glassfish ejb

我的EJB项目具有以下结构并使用maven打包。它将ejb打包在core.jar文件中。通过将所有接口和POJO移动到打包为jar (core-common.jar)的单独项目中,然后将其作为依赖项添加到Web模块,可以实现远程查找。使它们可以用于远程EJB调用。

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

当我部署我的应用程序时,当核心尝试实例化任何POJO和IllegalAccessException - access denied时,我最终得到core-common.jar。没有POJO或类具有私有方法或构造函数。这让我感到困惑。

另外我要指出的是,过去这些POJO都有它的构造函数protected,并且在重新分解它以对POJO和接口进行分层后,我决定制作所有公众。

有人知道在重新分解后可能导致此非法访问的原因是什么?该应用程序部署在Glassfish上。

1 个答案:

答案 0 :(得分: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>