我的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上。
答案 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>