为什么Glassfish会生成一个不完整的grated.policy文件?

为什么Glassfish会生成一个不完整的grated.policy文件?,glassfish,ejb,security-policy,Glassfish,Ejb,Security Policy,版本:GlassFish服务器3.1.2.2(构建5) 我有一个EAR项目,其中包含一个WAR和一个EAR 在EAR的META-INF文件夹中,我有一个sun application.xml文件,它将角色选择映射到组 在Glassfish的默认文件域中,我配置了映射到这些组的用户 我没有使用默认角色映射,也没有激活安全管理器 访问非常有效。通过删除部署描述符进一步证明了这一点,当尝试在没有部署描述符的情况下登录时,会导致授权异常 然而,当尝试访问我的ejb的一个看似随机(但一致)的选择时,我对臭

版本:GlassFish服务器3.1.2.2(构建5)

我有一个
EAR
项目,其中包含一个
WAR
和一个
EAR

在EAR的
META-INF
文件夹中,我有一个
sun application.xml
文件,它将角色选择映射到组

Glassfish
的默认文件域中,我配置了映射到这些组的用户

我没有使用默认角色映射,也没有激活安全管理器

访问非常有效。通过删除部署描述符进一步证明了这一点,当尝试在没有部署描述符的情况下登录时,会导致授权异常

然而,当尝试访问我的ejb的一个看似随机(但一致)的选择时,我对臭名昭著的Glassfish“
javax.ejb.AccessLocalException:客户机未被授权进行此调用”异常感到厌烦

我知道,但这不起作用

当我查看EJB的策略文件时,我立即注意到受影响的EJB授权丢失了

似乎缺少sun-application.xml文件中定义的每个组一个或两个角色

为什么Glassfish无法从(经验证的)工作
sun application.xml和(经验证的)一组
@roles允许的
定义生成完整的策略文件

以下是部署描述符:

<!DOCTYPE sun-application PUBLIC "-//Sun Microsystems, Inc.//DTD 
GlassFish Application Server 3.0 Java EE Application 6.0//EN" 
"http://www.sun.com/software/appserver/dtds/sun-application_6_0-0.dtd">
<sun-application>



<security-role-mapping>
    <role-name>ViewAllData</role-name>
    <role-name>BasicUser</role-name>
    <group-name>BasicGroup</group-name>
</security-role-mapping>

<security-role-mapping>
    <role-name>DataSupervisor</role-name>
    <group-name>DatasetSupervisors</group-name>
</security-role-mapping>

<security-role-mapping>
    <role-name>FindData</role-name>
    <role-name>FindSubData</role-name>
    <group-name>DatasetUsers</group-name>
</security-role-mapping>

<security-role-mapping>
    <role-name>ManageData</role-name>
    <role-name>ManageSubData</role-name>
    <role-name>InvokeDataload</role-name>
    <group-name>DatasetManagers</group-name>
</security-role-mapping>


<security-role-mapping>
    <role-name>ResolveGroup1</role-name>
    <role-name>ResolveGroup2</role-name>
    <role-name>ResolveGroup3</role-name>
    <group-name>Decoders</group-name>
</security-role-mapping>
</sun-application>

除非有人能告诉我其他情况,否则我出现问题的原因似乎是因为每个
只能使用一个

@RolesAllowed({"ResolveGroup1"})
@Stateless(mappedName = "ejb/FindGroupOneController")
@Local(FindRegistrationFragmentController.class)
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class FindGroupOneControllerImpl implements FindGroupOneController{


@RolesAllowed({"ViewAllData"})
@Stateless(mappedName = "ejb/ViewDataController")
@Local(FindRegistrationFragmentController.class)
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class ViewDataControllerImpl implements ViewDataController{