Hello, thanks again for your answers. I explain a little more You asked: Where's the server side code? in cxf se impl class? Yes it is!
The application is the same as described in the prevoius email: Re: Sending Object between cxf-se published in servicemix The client is external to the bus, and it's automatically genereted by cxf library. In the automatically generated code I inserted the code you can see as CLIENT_SIDE. The SERVER_SIDE is in cxf-se_1. (see Re: Sending Object between cxf-se published in servicemix). This service as to send a message to a servicemix-bean. But the important thing here is that cxf-se_1 has to maintain a session with the external client. This is the problem that I should solve. I put the code that you can see in the SERVER_SIDE below, in a method in the cxf-se_1. To clarify I put here the implementation where there is only a method exposed by the service: @WebService(targetNamespace = "http://myproject.com/NDTWS/" ) public class TargetWSImpl implements TargetWS{ private final static Logger logger = Logger.getLogger(TargetWSImpl.class); @Resource private WebServiceContext context; public boolean doLogin(String in0)throws Exception{ boolean returnValue = false; try { MessageContext mc = context.getMessageContext(); HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); if (session == null) { logger.info("Starting the Session"); } String name = (String)session.getAttribute("name"); if (name == null) { name = in0; logger.info("Starting the Session"); } session.setAttribute("name", in0); ClientFactory factory = (ClientFactory) new InitialContext().lookup(ClientFactory.DEFAULT_JNDI_NAME); ServiceMixClient client = factory.createClient(); Destination destination = client.createDestination("service:http://myproject.com/components/communicationManager"); InOut inOutExchange = destination.createInOutExchange(); NormalizedMessage message = inOutExchange.getInMessage(); String operationName= "doLogin"; String[] params = {in0}; String messageStringContent = "T"+ operationName + "T" + params[0]; logger.info("********** TARGET : " + messageStringContent); //IN THIS COMMENT IS SHOWN THE MESAGE THAT //THE SERVICEMIX-BEAN WILL SEND // TO CXF-SE_2 /* + "<message xmlns='http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper'>" + " <part>" + " <doLogin xmlns='http://myproject.com/NDWS3/types'>" + " <arg0>" + in0 + "</arg0>" + " </doLogin>" + " </part>" + "</message>";*/ //END OF COMMENT inOutExchange.getInMessage().setContent(new StringSource(messageStringContent)); logger.info("TARGET SENDS TO ORCHESTRATORS!"); client.sendSync(inOutExchange, 20000); System.err.println(new SourceTransformer().contentToString(inOutExchange.getOutMessage())); logger.info("TARGET RECEIVES FROM ORCHESTRATORS!"); SourceTransformer sourceTransformer = new SourceTransformer(); String stringReturnMessage = sourceTransformer.toString(inOutExchange.getOutMessage().getContent()); logger.info("TARGET: " + stringReturnMessage); String[] stringBoolean1 = stringReturnMessage.split("<return>"); String[] stringBoolean2 = stringBoolean1[1].split("</return>"); returnValue = Boolean.parseBoolean(stringBoolean2[0]); } catch(Exception e) { e.printStackTrace(); return false; } return returnValue; } } I found how to configure a session maintained in: http://weblogs.java.net/blog/ramapulavarthi/archive/2006/06/maintaining_ses.html and by a kind suggestion from the cxf community but I think that for servicemix there is another way of setting that because this rises the reported exception. Please, would you give me some suggestion? I have very few time to solve this last problems. Thank you again for your kindness, Best regards anna ---------- Initial Header ----------- >From : "Freeman Fang" [email protected] To : [email protected] Cc : Date : Mon, 12 Jan 2009 10:05:10 +0800 Subject : Re: Mantain a session between a cxf-se(bc) and an external client > [email protected] wrote: > > Hello, > > > > I'm using cxf 2.1.3, with servicemix 3.2.3 > > and I know that like in axis, in jax-ws, > > there is the possibility to mantain a conversational state > > between a client and a web service setting to maintain a session. > > > > I have published a cxf-se and cxf-bc for a service, > > and there is an extarnal client invoking method on the service. > > I tried this: > > (CLIENT SIDE) > > TargetWSImplService ss = new TargetWSImplService(wsdlURL, SERVICE_NAME); > > TargetWSImpl port = ss.getTargetWSImplPort(); > > ((BindingProvider)port).getRequestContext().put(BindingProvider.SESSION_MAINTAIN_PROPERTY,true); > > > > > > (SERVER SIDE) > > MessageContext mc = context.getMessageContext(); > > HttpSession session = > > ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); > > if (session == null) { > > logger.info("Starting the Session"); > > } > > > Where's the server side code? in cxf se impl class? or In the > interceptor of cxf bc? > Could you provide the whole code? > Freeman > > but when a try: > > 11-gen-2009 2.45.06 org.apache.cxf.transport.jbi.JBITransportFactory > > setDeliveryChannel > > INFO: configuring DeliveryChannel: > > org.apache.servicemix.common.endpointdeliverychan...@15abfe1 > > 11-gen-2009 2.45.07 org.apache.cxf.transport.jbi.JBITransportFactory > > setDeliveryChannel > > INFO: configuring DeliveryChannel: > > org.apache.servicemix.common.endpointdeliverychan...@15abfe1 > > java.lang.NullPointerException > > at songND.tws.TargetWSImpl.doLogin(Unknown Source) > > 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:136) > > at > > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82) > > at > > org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:110) > > at > > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68) > > at > > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:56) > > at > > org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37) > > at > > org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:92) > > at > > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) > > at > > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77) > > at > > org.apache.cxf.transport.jbi.JBIDispatcherUtil.dispatch(JBIDispatcherUtil.java:156) > > at > > org.apache.servicemix.cxfse.CxfSeEndpoint.process(CxfSeEndpoint.java:284) > > at > > org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538) > > at > > org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490) > > at > > org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46) > > at > > org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:620) > > at > > org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:172) > > at > > org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167) > > at > > org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134) > > at > > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) > > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) > > at java.lang.Thread.run(Thread.java:619) > > 11-gen-2009 2.45.07 org.apache.cxf.transport.jbi.JBITransportFactory > > setDeliveryChannel > > > > Could somebody gently give some suggestion, please? > > Should I have to configure something in spring for the cxf-se > > or cxf-bc? > > > > If it's possible could you also give some suggestion for the other e-mail I > > sent? > > > > I'd be very grateful. > > Thank you in advance, > > anna > > > > > > > >
