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
