It sounds like something in your second environment is setting a security 
manager which has some relatively strict permissions.

A while ago, I did some investigations to figure out what security settings CXF 
would need to work in such an environment.  See:

https://issues.apache.org/jira/browse/CXF-2683

I'm not sure if that's 100% accurate anymore as that is over a year old now.   
Should be a good start though.

Dan


On Sep 26, 2012, at 8:26 AM, Juan Jose Perez Consuegra <[email protected]> 
wrote:

> I'm having a problem when running a Jetty server for publishing a web 
> service. If I start the server from a simple class with static void main 
> method I have no problem:
> 
> package cserver.ws;
> 
> import org.apache.cxf.Bus;
> import org.apache.cxf.BusFactory;
> import org.apache.cxf.bus.spring.SpringBusFactory;
> import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
> import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
> 
> public class RestServer {
> 
>    static {
>        // set the configuration file
>        SpringBusFactory factory = new SpringBusFactory();
>        Bus bus = 
> factory.createBus("src/es/uned/scc/related/cserver/ws/server-bean.xml");
>        BusFactory.setDefaultBus(bus);
>    }
> 
>    protected RestServer() throws Exception {
>        JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
>        sf.setResourceClasses(RLABSystemWSRest.class);
>        sf.setResourceProvider(RLABSystemWSRest.class,
>            new SingletonResourceProvider(new RLABSystemWSRest()));
>        sf.setAddress("http://localhost:9000/";);
> 
>        sf.create();
>    }
> 
>    public static void main(String args[]) throws Exception {
>        new RestServer();
>        System.out.println("Server ready...");
> 
>    }
> }
> 
> I can test all the method of the service with Junit or call them from a web 
> browser without any problem, but if I want to load this class from another 
> one in order to embed the start process like this:
> 
> package cserver.ws;
> 
> public class initRest {
> 
>      /**
>      * @param args
>      */
>      public static void main(String[] args)  throws Exception {
> 
>                  new RestServer();
> 
> 
>      }
> 
> }
> 
> an error raise like this:
> 
> sep 26, 2012 2:00:24 PM org.eclipse.jetty.server.HttpConnection handleRequest
> Advertencia: /traceTest/HOLA
> java.security.AccessControlException: access denied 
> ("java.lang.RuntimePermission" "setContextClassLoader")
>      at java.security.AccessControlContext.checkPermission(Unknown Source)
>      at java.security.AccessController.checkPermission(Unknown Source)
>      at java.lang.SecurityManager.checkPermission(Unknown Source)
>      at java.lang.Thread.setContextClassLoader(Unknown Source)
>      at 
> org.apache.cxf.common.classloader.ClassLoaderUtils$1.run(ClassLoaderUtils.java:56)
>      at 
> org.apache.cxf.common.classloader.ClassLoaderUtils$1.run(ClassLoaderUtils.java:54)
>      at java.security.AccessController.doPrivileged(Native Method)
>      at 
> org.apache.cxf.common.classloader.ClassLoaderUtils.setThreadContextClassloader(ClassLoaderUtils.java:53)
>      at 
> org.apache.cxf.common.classloader.ClassLoaderUtils$ClassLoaderHolder.reset(ClassLoaderUtils.java:49)
>      at 
> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:314)
>      at 
> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>      at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
>      at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941)
>      at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:188)
>      at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)
>      at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>      at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>      at 
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
>      at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>      at org.eclipse.jetty.server.Server.handle(Server.java:349)
>      at 
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
>      at 
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919)
>      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582)
>      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
>      at 
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:50)
>      at 
> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:245)
>      at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>      at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>      at java.lang.Thread.run(Unknown Source)
> 
> sep 26, 2012 2:00:47 PM org.eclipse.jetty.server.session.HashSessionManager 
> scavenge
> Advertencia: Problem scavenging sessions
> java.security.AccessControlException: access denied 
> ("java.lang.RuntimePermission" "setContextClassLoader")
>      at java.security.AccessControlContext.checkPermission(Unknown Source)
>      at java.security.AccessController.checkPermission(Unknown Source)
>      at java.lang.SecurityManager.checkPermission(Unknown Source)
>      at java.lang.Thread.setContextClassLoader(Unknown Source)
>      at 
> org.eclipse.jetty.server.session.HashSessionManager.scavenge(HashSessionManager.java:293)
>      at 
> org.eclipse.jetty.server.session.HashSessionManager$2.run(HashSessionManager.java:269)
>      at java.util.TimerThread.mainLoop(Unknown Source)
>      at java.util.TimerThread.run(Unknown Source)
> 
> Exception in thread "HashSessionScavenger-0" 
> java.security.AccessControlException: access denied 
> ("java.lang.RuntimePermission" "setContextClassLoader")
>      at java.security.AccessControlContext.checkPermission(Unknown Source)
>      at java.security.AccessController.checkPermission(Unknown Source)
>      at java.lang.SecurityManager.checkPermission(Unknown Source)
>      at java.lang.Thread.setContextClassLoader(Unknown Source)
>      at 
> org.eclipse.jetty.server.session.HashSessionManager.scavenge(HashSessionManager.java:321)
>      at 
> org.eclipse.jetty.server.session.HashSessionManager$2.run(HashSessionManager.java:269)
>      at java.util.TimerThread.mainLoop(Unknown Source)
>      at java.util.TimerThread.run(Unknown Source)
> 
> I'm really lost, I can't understand the problem, when I start the server the 
> trace is the same in both cases:
> 
> log4j:WARN No appenders could be found for logger 
> (org.apache.cxf.bus.spring.BusApplicationContext).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more 
> info.
> sep 26, 2012 2:00:12 PM org.apache.cxf.bus.spring.BusApplicationContext 
> getConfigResources
> Información: Loaded configuration file 
> src/es/uned/scc/related/cserver/ws/server-bean.xml.
> sep 26, 2012 2:00:17 PM org.apache.cxf.endpoint.ServerImpl initDestination
> Información: Setting the server's publish address to be http://localhost:9000/
> sep 26, 2012 2:00:17 PM org.eclipse.jetty.server.Server doStart
> Información: jetty-7.5.4.v20111024
> sep 26, 2012 2:00:17 PM org.eclipse.jetty.server.AbstractConnector doStart
> Información: Started [email protected]:9000 STARTING
> sep 26, 2012 2:00:17 PM org.eclipse.jetty.server.handler.ContextHandler 
> startContext
> Información: started o.e.j.s.h.ContextHandler{,null}
> 
> can't find any difference
> 
> any idea????
> 
> thanks everybody,
> 
> Juanjo
> Tte. Juan José Pérez Consuegra
> Instituto Tecnológico "La Marañosa"
> Área de Electrónica/Unidad de Robótica
> Tlfno.: Mil. 820 2452   / Civil.  91 174 2452
> [email protected]<mailto:[email protected]>
> 

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to