Hi

You'll probably need to set up an appropriate Jetty handler using 
httpj:handler, ex :

<httpj:engine-factory bus="cxf" id="jetty-factory"> <httpj:engine port="8009"> <httpj:handlers> <bean class="org.mortbay.jetty.servlet.SessionHandler"> <!-- configure it -->
                </bean>
<bean class="org.mortbay.jetty.handler.DefaultHandler"/> </httpj:handlers> </httpj:engine> </httpj:engine-factory>
Actually, you can probably just set a sessionSupport attribute to true :

http://cwiki.apache.org/CXF20DOC/jetty-configuration.html

let us know please if it helps

cheers, Sergey


Hi there!

Can somebody please help me with the following issue:

I defined the method of interface as

   @GET
   @Path("/image")
   @Produces("image/jpeg")
   @Consumes(MediaType.WILDCARD)
   public BufferedImage loadBodyPart(@Context MessageContext context,
           @QueryParam("position") Triple3D position,
           @QueryParam("lookdir") Triple3D locationDir);

Now, when I am trying to invoke it from WEB, I am getting the error:

WARNING: Application has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: No SessionHandler or SessionManager
       at 
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:155)
       at 
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:121)
       at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:130)
       at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:82)
       at 
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
       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:106)
       at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
       at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:109)
       at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:312)
       at 
org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:276)
       at 
org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70)
       at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
       at 
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
       at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
       at org.mortbay.jetty.Server.handle(Server.java:326)
       at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:536)
       at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:915)
       at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
       at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
       at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405)
       at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
       at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.IllegalStateException: No SessionHandler or SessionManager
       at org.mortbay.jetty.Request.getSession(Request.java:1209)
       at org.mortbay.jetty.Request.getSession(Request.java:1199)
       at 
nl.greenvalley.hba.web.rest.EndpointService.loadBodyPart(EndpointService.java:50)
       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.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
       at 
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
       ... 24 more

As far as I understood, the error means that I did not configure any session
manager for the underlying Jetty transport.

I am configuring things like this:


       JAXRSServerFactoryBean sfb = new JAXRSServerFactoryBean();
       sfb.setResourceClasses(EndpointServiceInterface.class);
       SingletonResourceProvider srp = new SingletonResourceProvider(
               new EndpointService(imageStorage, imageAction,
                       new DefaultBodyPartStateHandler(),
                       new BodyPartMapStorageInterface() {
       sfb.setResourceProvider(EndpointServiceInterface.class, srp);
       sfb.setProviders(Arrays.asList(new ImageBodyWriter(),
               new ImageBodyReader()));
       sfb.setAddress("http://localhost:9000/";);
       server = sfb.create();

So at this point I don't see any way to configure Jetty. Can somebody please
advice?

Thank you!

--
Eugene N Dzhurinsky

Reply via email to