Java 注释@RolesAllowed在Tomcat 7.0.32中部署的Web服务上不起作用

Java 注释@RolesAllowed在Tomcat 7.0.32中部署的Web服务上不起作用,java,web-services,annotations,jax-ws,tomcat7,Java,Web Services,Annotations,Jax Ws,Tomcat7,我想我真的被困在这上面4个小时了。 我有一个在JAX-WS中开发的示例web服务,我已经成功地在web.xml中配置了基本身份验证,但是我无法使注释“@RolesAllowed”起作用。此注释将被忽略。 我正在使用Servlet3.0API和Tomcat7.0.32,所以我认为应该支持@RolesAllowed 以下是我的代码: 在Web.xml中,我有以下配置: 安全培训 ApexeWebServiceCollection 这些资源只能由授权客户访问。 /* 得到 邮递 这些是具有访问权限的

我想我真的被困在这上面4个小时了。 我有一个在JAX-WS中开发的示例web服务,我已经成功地在web.xml中配置了基本身份验证,但是我无法使注释“@RolesAllowed”起作用。此注释将被忽略。 我正在使用Servlet3.0API和Tomcat7.0.32,所以我认为应该支持@RolesAllowed

以下是我的代码: 在Web.xml中,我有以下配置:


安全培训
ApexeWebServiceCollection
这些资源只能由授权客户访问。
/*
得到
邮递
这些是具有访问权限的角色。
开发商
测试员
这就是必须传输用户数据的方式。
没有一个
基本的
违约
服务开发者
开发商
服务测试仪
测试员
然后我在服务端实现了以下方法。我想要方法:“sayNumber”只能由“开发人员”访问,不能由“测试人员”访问:

@SchemaValidation(handler=SchemaValidationErrorHandler.class) @WebService(endpointInterface=“com.WebService.HelloWorld”)

公共类HelloWorldImpl实现HelloWorld{

@Resource
WebServiceContext wsContext;

@Override
@WebMethod
@RolesAllowed("developer")
public int sayNumber(double number) throws SOAPException {
    MessageContext messageContext = wsContext.getMessageContext();
    boolean isAllowed=wsContext.isUserInRole("developer");
    System.out.println("Authorization:"+isAllowed);
    return (int) ++number;
}
}

然后在Spring配置中(是的,我也使用Spring 3.1.2),我有以下内容来连接URI和服务:

<wss:binding url="/hello">
    <wss:service>
        <ws:service bean="#helloWorldWebService"
            bindingID="http://www.w3.org/2003/05/soap/bindings/HTTP/" />
    </wss:service>
</wss:binding>
当然,我可以在这里抛出一个异常,将测试人员踢出。但是,我希望注释“@RolesAllowed”来完成这项工作。我尝试了很多方法,但是这个注释根本不起作用(注释被忽略)。
请帮忙。

没人知道这件事?
boolean isAllowed=wsContext.isUserInRole("developer");
    System.out.println("Authorization:"+isAllowed);