You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by sannabel <sa...@ghx.com> on 2009/06/17 18:20:18 UTC

Error trying to use MessageContext with Spring Security enabled - JAX-RS

Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04, and
Jetty.

I'm trying to use MessageContext in my JAX-RS Service Impl class.

@Produces("application/xml")
@Path("/item/")
public class ServiceImpl extends WebServiceBase implements IService{

    @Context
    private org.apache.cxf.jaxrs.ext.MessageContext messageContext;

   ....


    @GET
    @Produces("text/xml")
    @Path("vendoridsbybuyereid/")
    @Override
    public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String id)
throws ItemFault {


        ApplicationContext ctx = Util.getSpringContext();

        try {
            isDevUser(messageContext);
        } catch (Exception ex) {
            log.warn("Error", ex);
        }
        IItemService itemService = (IItemService)
ctx.getBean(Constants.ITEM_SERVICE);
        List<String> list = null;

        try {
            list = itemService.vendorIdsByBuyerEID(id);

        } catch (Exception ex) {
            log.error("Error trying to call service.", ex);

            throw new WebApplicationException(500);
        }
        return Response.ok(new StringCollection(list)).build();
    }
}
<!--
	<global-method-security>
		<protect-pointcut expression="execution(*
com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
access="ROLE_ADMIN,ROLE_DEV"/>
		<protect-pointcut expression="execution(*
com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
access="ROLE_USER,ROLE_DEV"/>

	</global-method-security>
	
	<http create-session="never" auto-config="false"
		realm="Restricted resources">
		<intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
		<http-basic />
		<logout />
	</http>
-->

It works fine when I have the security pointcuts commented out, but when I
include them I get the following error:

Thanks,
Seth

ERROR [main] (ContextLoader.java:215) - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'service': Invocation of init method failed; nested exception is
org.apache.cxf.service.factory.ServiceConstructionException
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
        at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
        at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
        at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
        at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
        at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
        at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
        at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
        at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
        at
com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
        at
com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
        at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
        at
org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
        at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
        at
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
        at org.junit.runners.Suite.access$000(Suite.java:26)
        at org.junit.runners.Suite$1.run(Suite.java:93)
        at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at org.junit.runners.Suite.run(Suite.java:91)
        at
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
        at org.junit.runners.Suite.access$000(Suite.java:26)
        at org.junit.runners.Suite$1.run(Suite.java:93)
        at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at org.junit.runners.Suite.run(Suite.java:91)
        at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
        at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
        at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
        at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
        at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
        ... 46 more
Caused by: java.lang.IllegalArgumentException: Can not set
org.apache.cxf.jaxrs.ext.MessageContext field
com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageContext
to $Proxy46
        at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
        at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
        at
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
        at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
        at java.lang.reflect.Field.set(Field.java:657)
        at
org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:151)
        at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:695)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
        at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
        ... 53 more
-- 
View this message in context: http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24077137.html
Sent from the cxf-user mailing list archive at Nabble.com.


RE: Error trying to use MessageContext with Spring Security enabled - JAX-RS

Posted by Sergey Beryozkin <sb...@progress.com>.
Great, I sent the other email suggesting to put this method on the
interface, in my tests I used a dedicated interface to avoid adding
non-essential methods to the application interface, so a resource class
simply can implement 2 interfaces 

Cheers, Sergey

-----Original Message-----
From: sannabel [mailto:sannabel@ghx.com] 
Sent: 17 June 2009 20:12
To: users@cxf.apache.org
Subject: Re: Error trying to use MessageContext with Spring Security
enabled - JAX-RS


Okay, works now I'd forgotten to add the method to my IService
Interface.

public void setMessageContext(MessageContext mc);

Seth




sannabel wrote:
> 
> Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04,
and
> Jetty.
> 
> I'm trying to use MessageContext in my JAX-RS Service Impl class.
> 
> @Produces("application/xml")
> @Path("/item/")
> public class ServiceImpl extends WebServiceBase implements IService{
> 
>     @Context
>     private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
> 
>    ....
> 
> 
>     @GET
>     @Produces("text/xml")
>     @Path("vendoridsbybuyereid/")
>     @Override
>     public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String
id)
> throws ItemFault {
> 
> 
>         ApplicationContext ctx = Util.getSpringContext();
> 
>         try {
>             isDevUser(messageContext);
>         } catch (Exception ex) {
>             log.warn("Error", ex);
>         }
>         IItemService itemService = (IItemService)
> ctx.getBean(Constants.ITEM_SERVICE);
>         List<String> list = null;
> 
>         try {
>             list = itemService.vendorIdsByBuyerEID(id);
> 
>         } catch (Exception ex) {
>             log.error("Error trying to call service.", ex);
> 
>             throw new WebApplicationException(500);
>         }
>         return Response.ok(new StringCollection(list)).build();
>     }
> }
> <!--
> 	<global-method-security>
> 		<protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
> access="ROLE_ADMIN,ROLE_DEV"/>
> 		<protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
> access="ROLE_USER,ROLE_DEV"/>
> 
> 	</global-method-security>
> 	
> 	<http create-session="never" auto-config="false"
> 		realm="Restricted resources">
> 		<intercept-url pattern="/**"
access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
> 		<http-basic />
> 		<logout />
> 	</http>
> -->
> 
> It works fine when I have the security pointcuts commented out, but
when I
> include them I get the following error:
> 
> Thanks,
> Seth
> 
> ERROR [main] (ContextLoader.java:215) - Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error
creating
> bean with name 'service': Invocation of init method failed; nested
> exception is
org.apache.cxf.service.factory.ServiceConstructionException
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>         at
>
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObjec
t(AbstractBeanFactory.java:264)
>         at
>
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.g
etSingleton(DefaultSingletonBeanRegistry.java:222)
>         at
>
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(
AbstractBeanFactory.java:261)
>         at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
stractBeanFactory.java:185)
>         at
>
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Ab
stractBeanFactory.java:164)
>         at
>
org.springframework.beans.factory.support.DefaultListableBeanFactory.pre
InstantiateSingletons(DefaultListableBeanFactory.java:429)
>         at
>
org.springframework.context.support.AbstractApplicationContext.finishBea
nFactoryInitialization(AbstractApplicationContext.java:728)
>         at
>
org.springframework.context.support.AbstractApplicationContext.refresh(A
bstractApplicationContext.java:380)
>         at
>
org.springframework.web.context.ContextLoader.createWebApplicationContex
t(ContextLoader.java:255)
>         at
>
org.springframework.web.context.ContextLoader.initWebApplicationContext(
ContextLoader.java:199)
>         at
>
com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupU
til.java:47)
>         at
>
com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
>         at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
>
org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122
)
>         at
>
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(Met
hodRoadie.java:86)
>         at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
>         at
> org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
>         at
>
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4Clas
sRunner.java:88)
>         at
>
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunne
r.java:51)
>         at
>
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.jav
a:44)
>         at
>
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:2
7)
>         at
>
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at
>
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:
42)
>         at
>
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.j
ava:33)
>         at org.junit.runners.Suite.access$000(Suite.java:26)
>         at org.junit.runners.Suite$1.run(Suite.java:93)
>         at
>
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:2
7)
>         at
>
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at org.junit.runners.Suite.run(Suite.java:91)
>         at
>
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.j
ava:33)
>         at org.junit.runners.Suite.access$000(Suite.java:26)
>         at org.junit.runners.Suite$1.run(Suite.java:93)
>         at
>
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:2
7)
>         at
>
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at org.junit.runners.Suite.run(Suite.java:91)
>         at
> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
>         at
>
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTe
stRunner.java:515)
>         at
>
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUni
tTestRunner.java:1031)
>         at
>
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitT
estRunner.java:888)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>         at
>
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBea
n.java:112)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
>         at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414
)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>         at
>
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFac
tory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>         ... 46 more
> Caused by: java.lang.IllegalArgumentException: Can not set
> org.apache.cxf.jaxrs.ext.MessageContext field
>
com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageCont
ext
> to $Proxy46
>         at
>
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns
afeFieldAccessorImpl.java:146)
>         at
>
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns
afeFieldAccessorImpl.java:150)
>         at
>
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.ja
va:37)
>         at
>
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorI
mpl.java:57)
>         at java.lang.reflect.Field.set(Field.java:657)
>         at
>
org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
>
org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtil
s.java:151)
>         at
>
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(Injection
Utils.java:695)
>         at
>
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFa
ctoryBean.java:180)
>         at
>
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders
(JAXRSServerFactoryBean.java:201)
>         at
>
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBea
n.java:80)
>         ... 53 more
> 

-- 
View this message in context:
http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Sec
urity-enabled---JAX-RS-tp24077137p24080094.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: Error trying to use MessageContext with Spring Security enabled - JAX-RS

Posted by sannabel <sa...@ghx.com>.
Okay, works now I'd forgotten to add the method to my IService Interface.

public void setMessageContext(MessageContext mc);

Seth




sannabel wrote:
> 
> Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04, and
> Jetty.
> 
> I'm trying to use MessageContext in my JAX-RS Service Impl class.
> 
> @Produces("application/xml")
> @Path("/item/")
> public class ServiceImpl extends WebServiceBase implements IService{
> 
>     @Context
>     private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
> 
>    ....
> 
> 
>     @GET
>     @Produces("text/xml")
>     @Path("vendoridsbybuyereid/")
>     @Override
>     public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String id)
> throws ItemFault {
> 
> 
>         ApplicationContext ctx = Util.getSpringContext();
> 
>         try {
>             isDevUser(messageContext);
>         } catch (Exception ex) {
>             log.warn("Error", ex);
>         }
>         IItemService itemService = (IItemService)
> ctx.getBean(Constants.ITEM_SERVICE);
>         List<String> list = null;
> 
>         try {
>             list = itemService.vendorIdsByBuyerEID(id);
> 
>         } catch (Exception ex) {
>             log.error("Error trying to call service.", ex);
> 
>             throw new WebApplicationException(500);
>         }
>         return Response.ok(new StringCollection(list)).build();
>     }
> }
> <!--
> 	<global-method-security>
> 		<protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
> access="ROLE_ADMIN,ROLE_DEV"/>
> 		<protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
> access="ROLE_USER,ROLE_DEV"/>
> 
> 	</global-method-security>
> 	
> 	<http create-session="never" auto-config="false"
> 		realm="Restricted resources">
> 		<intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
> 		<http-basic />
> 		<logout />
> 	</http>
> -->
> 
> It works fine when I have the security pointcuts commented out, but when I
> include them I get the following error:
> 
> Thanks,
> Seth
> 
> ERROR [main] (ContextLoader.java:215) - Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'service': Invocation of init method failed; nested
> exception is org.apache.cxf.service.factory.ServiceConstructionException
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>         at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>         at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>         at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>         at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>         at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>         at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>         at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>         at
> com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
>         at
> com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
>         at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
>         at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
>         at
> org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
>         at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
>         at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
>         at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
>         at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>         at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>         at
> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>         at org.junit.runners.Suite.access$000(Suite.java:26)
>         at org.junit.runners.Suite$1.run(Suite.java:93)
>         at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>         at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at org.junit.runners.Suite.run(Suite.java:91)
>         at
> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>         at org.junit.runners.Suite.access$000(Suite.java:26)
>         at org.junit.runners.Suite$1.run(Suite.java:93)
>         at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>         at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>         at org.junit.runners.Suite.run(Suite.java:91)
>         at
> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
>         at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>         at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>         at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>         at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>         at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>         ... 46 more
> Caused by: java.lang.IllegalArgumentException: Can not set
> org.apache.cxf.jaxrs.ext.MessageContext field
> com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageContext
> to $Proxy46
>         at
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
>         at
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
>         at
> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
>         at
> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
>         at java.lang.reflect.Field.set(Field.java:657)
>         at
> org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at
> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:151)
>         at
> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:695)
>         at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
>         at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
>         at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
>         ... 53 more
> 

-- 
View this message in context: http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24080094.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: Error trying to use MessageContext with Spring Security enabled - JAX-RS

Posted by Sergey Beryozkin <sb...@progress.com>.
This setter should also probably be an interface method, but I would not put it on the IService, you may want just to add some 
ContextAware interface which will have this method

cheers, Sergey

----- Original Message ----- 
From: "Sergey Beryozkin" <sb...@progress.com>
To: <us...@cxf.apache.org>
Sent: Wednesday, June 17, 2009 5:27 PM
Subject: Re: Error trying to use MessageContext with Spring Security enabled - JAX-RS


> Hi
>
> You need to use a method setter to inject any kind of context in such cases, when Spring AOP is used  :
>
> public class ServiceImpl extends WebServiceBase implements IService{
>
>
>   private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
>
>  @Context
>   public void setMessageContext(MessageContext mc) {messageContext = mc}
>
> }
>
> The setter name is 'set' + context name,  such as MessageContext,   etc
>
> thanks, Sergey
>
>
>
> ----- Original Message ----- 
> From: "sannabel" <sa...@ghx.com>
> To: <us...@cxf.apache.org>
> Sent: Wednesday, June 17, 2009 5:20 PM
> Subject: Error trying to use MessageContext with Spring Security enabled - JAX-RS
>
>
>>
>> Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04, and
>> Jetty.
>>
>> I'm trying to use MessageContext in my JAX-RS Service Impl class.
>>
>> @Produces("application/xml")
>> @Path("/item/")
>> public class ServiceImpl extends WebServiceBase implements IService{
>>
>>    @Context
>>    private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
>>
>>   ....
>>
>>
>>    @GET
>>    @Produces("text/xml")
>>    @Path("vendoridsbybuyereid/")
>>    @Override
>>    public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String id)
>> throws ItemFault {
>>
>>
>>        ApplicationContext ctx = Util.getSpringContext();
>>
>>        try {
>>            isDevUser(messageContext);
>>        } catch (Exception ex) {
>>            log.warn("Error", ex);
>>        }
>>        IItemService itemService = (IItemService)
>> ctx.getBean(Constants.ITEM_SERVICE);
>>        List<String> list = null;
>>
>>        try {
>>            list = itemService.vendorIdsByBuyerEID(id);
>>
>>        } catch (Exception ex) {
>>            log.error("Error trying to call service.", ex);
>>
>>            throw new WebApplicationException(500);
>>        }
>>        return Response.ok(new StringCollection(list)).build();
>>    }
>> }
>> <!--
>> <global-method-security>
>> <protect-pointcut expression="execution(*
>> com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
>> access="ROLE_ADMIN,ROLE_DEV"/>
>> <protect-pointcut expression="execution(*
>> com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
>> access="ROLE_USER,ROLE_DEV"/>
>>
>> </global-method-security>
>>
>> <http create-session="never" auto-config="false"
>> realm="Restricted resources">
>> <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
>> <http-basic />
>> <logout />
>> </http>
>> -->
>>
>> It works fine when I have the security pointcuts commented out, but when I
>> include them I get the following error:
>>
>> Thanks,
>> Seth
>>
>> ERROR [main] (ContextLoader.java:215) - Context initialization failed
>> org.springframework.beans.factory.BeanCreationException: Error creating bean
>> with name 'service': Invocation of init method failed; nested exception is
>> org.apache.cxf.service.factory.ServiceConstructionException
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>        at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>        at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>        at
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>        at
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>        at
>> com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
>>        at
>> com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
>>        at
>> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
>>        at
>> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
>>        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>>        at
>> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>>        at org.junit.runners.Suite.access$000(Suite.java:26)
>>        at org.junit.runners.Suite$1.run(Suite.java:93)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at org.junit.runners.Suite.run(Suite.java:91)
>>        at
>> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>>        at org.junit.runners.Suite.access$000(Suite.java:26)
>>        at org.junit.runners.Suite$1.run(Suite.java:93)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at org.junit.runners.Suite.run(Suite.java:91)
>>        at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>>        ... 46 more
>> Caused by: java.lang.IllegalArgumentException: Can not set
>> org.apache.cxf.jaxrs.ext.MessageContext field
>> com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageContext
>> to $Proxy46
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
>>        at
>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
>>        at java.lang.reflect.Field.set(Field.java:657)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:151)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:695)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
>>        ... 53 more
>> -- 
>> View this message in context: 
>> http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24077137.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>>
> 


Re: Error trying to use MessageContext with Spring Security enabled - JAX-RS

Posted by sannabel <sa...@ghx.com>.
Thanks for the reply, I implemented that, but that still didn't work.  

Now I get this error:

Thanks,
Seth

Caused by: org.apache.cxf.interceptor.Fault: Error creating bean with name
'service': Invocation of init method failed; nested exception is
org.apache.cxf.service.factory.ServiceConstructionException
	at
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:148)
	at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:114)
	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:117)
	at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:77)
	at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
	at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:95)
	at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
	... 15 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'service': Invocation of init method failed; nested
exception is org.apache.cxf.service.factory.ServiceConstructionException
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
	at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
	at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
	at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
	at
com.ghx.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
	at
com.ghx.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
	at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
	at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
	at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
	at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
	at
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
	at
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
	at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
	at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
	at
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
	at
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
	at org.junit.runners.Suite.access$000(Suite.java:26)
	at org.junit.runners.Suite$1.run(Suite.java:93)
	at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
	at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
	at org.junit.runners.Suite.run(Suite.java:91)
	at
org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
	at org.junit.runners.Suite.access$000(Suite.java:26)
	at org.junit.runners.Suite$1.run(Suite.java:93)
	at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
	at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
	at org.junit.runners.Suite.run(Suite.java:91)
	at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
	at
org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
	at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
	at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
	... 46 more
Caused by: javax.ws.rs.WebApplicationException
	at
org.apache.cxf.jaxrs.utils.InjectionUtils.reportServerError(InjectionUtils.java:312)
	at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectThroughMethod(InjectionUtils.java:225)
	at
org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:690)
	at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
	at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
	at
org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
	... 53 more
Response status : 500




Sergey Beryozkin-2 wrote:
> 
> Hi
> 
> You need to use a method setter to inject any kind of context in such
> cases, when Spring AOP is used  :
> 
> public class ServiceImpl extends WebServiceBase implements IService{
> 
> 
>    private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
> 
>   @Context
>    public void setMessageContext(MessageContext mc) {messageContext = mc}
> 
> }
> 
> The setter name is 'set' + context name,  such as MessageContext,   etc
> 
> thanks, Sergey
> 
> 
> 
> ----- Original Message ----- 
> From: "sannabel" <sa...@ghx.com>
> To: <us...@cxf.apache.org>
> Sent: Wednesday, June 17, 2009 5:20 PM
> Subject: Error trying to use MessageContext with Spring Security enabled -
> JAX-RS
> 
> 
>>
>> Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04, and
>> Jetty.
>>
>> I'm trying to use MessageContext in my JAX-RS Service Impl class.
>>
>> @Produces("application/xml")
>> @Path("/item/")
>> public class ServiceImpl extends WebServiceBase implements IService{
>>
>>    @Context
>>    private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
>>
>>   ....
>>
>>
>>    @GET
>>    @Produces("text/xml")
>>    @Path("vendoridsbybuyereid/")
>>    @Override
>>    public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String id)
>> throws ItemFault {
>>
>>
>>        ApplicationContext ctx = Util.getSpringContext();
>>
>>        try {
>>            isDevUser(messageContext);
>>        } catch (Exception ex) {
>>            log.warn("Error", ex);
>>        }
>>        IItemService itemService = (IItemService)
>> ctx.getBean(Constants.ITEM_SERVICE);
>>        List<String> list = null;
>>
>>        try {
>>            list = itemService.vendorIdsByBuyerEID(id);
>>
>>        } catch (Exception ex) {
>>            log.error("Error trying to call service.", ex);
>>
>>            throw new WebApplicationException(500);
>>        }
>>        return Response.ok(new StringCollection(list)).build();
>>    }
>> }
>> <!--
>> <global-method-security>
>> <protect-pointcut expression="execution(*
>> com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
>> access="ROLE_ADMIN,ROLE_DEV"/>
>> <protect-pointcut expression="execution(*
>> com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
>> access="ROLE_USER,ROLE_DEV"/>
>>
>> </global-method-security>
>>
>> <http create-session="never" auto-config="false"
>> realm="Restricted resources">
>> <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
>> <http-basic />
>> <logout />
>> </http>
>> -->
>>
>> It works fine when I have the security pointcuts commented out, but when
>> I
>> include them I get the following error:
>>
>> Thanks,
>> Seth
>>
>> ERROR [main] (ContextLoader.java:215) - Context initialization failed
>> org.springframework.beans.factory.BeanCreationException: Error creating
>> bean
>> with name 'service': Invocation of init method failed; nested exception
>> is
>> org.apache.cxf.service.factory.ServiceConstructionException
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>        at
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>        at
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>        at
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>        at
>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>        at
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>>        at
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>>        at
>> com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
>>        at
>> com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
>>        at
>> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
>>        at
>> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
>>        at
>> org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at
>> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>>        at
>> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>>        at org.junit.runners.Suite.access$000(Suite.java:26)
>>        at org.junit.runners.Suite$1.run(Suite.java:93)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at org.junit.runners.Suite.run(Suite.java:91)
>>        at
>> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>>        at org.junit.runners.Suite.access$000(Suite.java:26)
>>        at org.junit.runners.Suite$1.run(Suite.java:93)
>>        at
>> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>>        at
>> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>>        at org.junit.runners.Suite.run(Suite.java:91)
>>        at
>> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>>        at
>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
>> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>        at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>        at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>>        at
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>>        ... 46 more
>> Caused by: java.lang.IllegalArgumentException: Can not set
>> org.apache.cxf.jaxrs.ext.MessageContext field
>> com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageContext
>> to $Proxy46
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
>>        at
>> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
>>        at
>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
>>        at java.lang.reflect.Field.set(Field.java:657)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
>>        at java.security.AccessController.doPrivileged(Native Method)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:151)
>>        at
>> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:695)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
>>        at
>> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
>>        ... 53 more
>> -- 
>> View this message in context: 
>> http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24077137.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>> 
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24079778.html
Sent from the cxf-user mailing list archive at Nabble.com.


Re: Error trying to use MessageContext with Spring Security enabled - JAX-RS

Posted by Sergey Beryozkin <sb...@progress.com>.
Hi

You need to use a method setter to inject any kind of context in such cases, when Spring AOP is used  :

public class ServiceImpl extends WebServiceBase implements IService{


   private org.apache.cxf.jaxrs.ext.MessageContext messageContext;

  @Context
   public void setMessageContext(MessageContext mc) {messageContext = mc}

}

The setter name is 'set' + context name,  such as MessageContext,   etc

thanks, Sergey



----- Original Message ----- 
From: "sannabel" <sa...@ghx.com>
To: <us...@cxf.apache.org>
Sent: Wednesday, June 17, 2009 5:20 PM
Subject: Error trying to use MessageContext with Spring Security enabled - JAX-RS


>
> Hi, I'm using CXF 2.2.2 JAX-RS, Spring 2.5.5, Spring Security 2.04, and
> Jetty.
>
> I'm trying to use MessageContext in my JAX-RS Service Impl class.
>
> @Produces("application/xml")
> @Path("/item/")
> public class ServiceImpl extends WebServiceBase implements IService{
>
>    @Context
>    private org.apache.cxf.jaxrs.ext.MessageContext messageContext;
>
>   ....
>
>
>    @GET
>    @Produces("text/xml")
>    @Path("vendoridsbybuyereid/")
>    @Override
>    public Response vendorIdsByBuyerEID(@QueryParam("buyerid") String id)
> throws ItemFault {
>
>
>        ApplicationContext ctx = Util.getSpringContext();
>
>        try {
>            isDevUser(messageContext);
>        } catch (Exception ex) {
>            log.warn("Error", ex);
>        }
>        IItemService itemService = (IItemService)
> ctx.getBean(Constants.ITEM_SERVICE);
>        List<String> list = null;
>
>        try {
>            list = itemService.vendorIdsByBuyerEID(id);
>
>        } catch (Exception ex) {
>            log.error("Error trying to call service.", ex);
>
>            throw new WebApplicationException(500);
>        }
>        return Response.ok(new StringCollection(list)).build();
>    }
> }
> <!--
> <global-method-security>
> <protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.vendorIdsByBuyerEID(. .))"
> access="ROLE_ADMIN,ROLE_DEV"/>
> <protect-pointcut expression="execution(*
> com.contractservice.webservice.IService.mfgIdsByBuyerEID(. .))"
> access="ROLE_USER,ROLE_DEV"/>
>
> </global-method-security>
>
> <http create-session="never" auto-config="false"
> realm="Restricted resources">
> <intercept-url pattern="/**" access="ROLE_ADMIN,ROLE_USER,ROLE_DEV" />
> <http-basic />
> <logout />
> </http>
> -->
>
> It works fine when I have the security pointcuts commented out, but when I
> include them I get the following error:
>
> Thanks,
> Seth
>
> ERROR [main] (ContextLoader.java:215) - Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating bean
> with name 'service': Invocation of init method failed; nested exception is
> org.apache.cxf.service.factory.ServiceConstructionException
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>        at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>        at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>        at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>        at
> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>        at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
>        at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
>        at
> com.contractservice.test.util.SessionSetupUtil.getInstance(SessionSetupUtil.java:47)
>        at
> com.contractservice.test.BaseServletTest.setUp(BaseServletTest.java:39)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
>        at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
>        at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
>        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
>        at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
>        at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
>        at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
>        at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>        at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>        at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>        at
> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>        at org.junit.runners.Suite.access$000(Suite.java:26)
>        at org.junit.runners.Suite$1.run(Suite.java:93)
>        at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>        at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>        at org.junit.runners.Suite.run(Suite.java:91)
>        at
> org.junit.internal.runners.CompositeRunner.runChildren(CompositeRunner.java:33)
>        at org.junit.runners.Suite.access$000(Suite.java:26)
>        at org.junit.runners.Suite$1.run(Suite.java:93)
>        at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>        at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
>        at org.junit.runners.Suite.run(Suite.java:91)
>        at junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:36)
>        at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>        at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>        at
> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
> Caused by: org.apache.cxf.service.factory.ServiceConstructionException
>        at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:112)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
>        ... 46 more
> Caused by: java.lang.IllegalArgumentException: Can not set
> org.apache.cxf.jaxrs.ext.MessageContext field
> com.contractservice.webservice.impl.rest.ItemServiceImplRest.messageContext
> to $Proxy46
>        at
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
>        at
> sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
>        at
> sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
>        at
> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:57)
>        at java.lang.reflect.Field.set(Field.java:657)
>        at
> org.apache.cxf.jaxrs.utils.InjectionUtils$1.run(InjectionUtils.java:155)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at
> org.apache.cxf.jaxrs.utils.InjectionUtils.injectFieldValue(InjectionUtils.java:151)
>        at
> org.apache.cxf.jaxrs.utils.InjectionUtils.injectContextProxies(InjectionUtils.java:695)
>        at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.injectContexts(JAXRSServerFactoryBean.java:180)
>        at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.updateClassResourceProviders(JAXRSServerFactoryBean.java:201)
>        at
> org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:80)
>        ... 53 more
> -- 
> View this message in context: 
> http://www.nabble.com/Error-trying-to-use-MessageContext-with-Spring-Security-enabled---JAX-RS-tp24077137p24077137.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>