You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by lekkie <le...@gmail.com> on 2009/08/11 10:17:30 UTC

JMS SU: server's Publish Address is null

When servicemix deploys my SU, it shows the ffg:

Aug 11, 2009 8:22:55 AM org.apache.cxf.endpoint.ServerImpl initDestination
INFO: Setting the server's publish address to be null
Aug 11, 2009 8:22:55 AM org.apache.cxf.transport.jms.JMSDestination activate
INFO: JMSServerTransport activate()....


Subsequently, if I send an message (attachment) to the consumer SU from a
cxfclient, I get the following error message on ServiceMIX

INFO: run the incoming message in the threadpool
Aug 11, 2009 8:23:49 AM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept

INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:183)
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:54)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:220)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
ationObserver.java:78)
        at
org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
ava:209)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
ation.java:352)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:675)
        at java.lang.Thread.run(Thread.java:595)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected
character '-
' (code 45) in prolog; expected '<'
 at [row,col {unknown-source}]: [2,1]
        at
com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:
623)
        at
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.ja
va:2047)
        at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
        at
com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095
)
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:83)
        ... 8 more
Aug 11, 2009 8:23:49 AM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.UnsupportedOperationException: A destination must be specified.
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
cer.java:195)
        at
org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java
:133)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.sendRespo
nse(JMSDestination.java:528)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.commitOut
putMessage(JMSDestination.java:473)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.doClose(J
MSDestination.java:547)
        at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:16
7)
        at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:6
6)
        at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi
ngInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:220)
        at
org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMess
age(AbstractFaultChainInitiatorObserver.java:96)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:260)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
ationObserver.java:78)
        at
org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
ava:209)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
ation.java:352)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:675)
        at java.lang.Thread.run(Thread.java:595)
Aug 11, 2009 8:30:08 AM
org.apache.cxf.transport.jms.JMSDestination$JMSExecutor
run
INFO: run the incoming message in the threadpool
Aug 11, 2009 8:30:08 AM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
INFO: Interceptor has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:183)
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:54)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
orChain.java:220)
        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
ationObserver.java:78)
        at
org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
ava:209)
        at
org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
ation.java:352)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
utor.java:650)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
.java:675)
        at java.lang.Thread.run(Thread.java:595)
Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected
character '-
' (code 45) in prolog; expected '<'
 at [row,col {unknown-source}]: [2,1]
        at
com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:
623)
        at
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.ja
va:2047)
        at
com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
        at
com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095
)
        at
org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
Message(ReadHeadersInterceptor.java:83)
        ... 8 more
Aug 11, 2009 8:30:08 AM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.UnsupportedOperationException: A destination must be specified.
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
cer.java:195)
        at
org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java



See client code below:

ISServicesPortType mtomPort = createPort(MTOM_SERVICE, MTOM_PORT,
ISServicesPortType.class, true);
        try {
            InputStream pre =
this.getClass().getResourceAsStream("isServices.wsdl");
            int fileSize = 0;
            for (int i = pre.read(); i != -1; i = pre.read()) {
                fileSize++;
            }
            Holder<DataHandler> param = new Holder<DataHandler>();
            
            int count = 50;
            byte[] data = new byte[fileSize *  count];
            for (int x = 0; x < count; x++) {
               
this.getClass().getResourceAsStream("isServices.wsdl").read(data, fileSize *
x, fileSize);
            }
            
            param.value = new DataHandler(new ByteArrayDataSource(data,
"application/octet-stream"));
            Holder<String> name = new Holder<String>("call detail");
            is.services.types.ISBinaryType _sendAttachment_data = new
ISBinaryType();
            _sendAttachment_data.setAttachinfo(param.value);
            _sendAttachment_data.setName(name.value);
            mtomPort.sendAttachment(_sendAttachment_data);
//            Assert.fail("Expect the exception here !");
//            Assert.assertEquals("name unchanged", "return detail + call
detail", name.value);
//            Assert.assertNotNull(param.value);
            param.value.getInputStream().close();
            
        } catch (SOAPFaultException ex) {
        	Assert.assertTrue("Expect the configuration exception here",
ex.getCause() instanceof
org.apache.cxf.configuration.ConfigurationException);
        }

private static <T> T createPort(QName serviceName, QName portName, Class<T>
serviceEndpointInterface, boolean enableMTOM) throws Exception 
    {
    	Bus bus = BusFactory.getDefaultBus();
		ReflectionServiceFactoryBean serviceFactory = new
JaxWsServiceFactoryBean();
		serviceFactory.setBus(bus);
		serviceFactory.setServiceName(serviceName);
		serviceFactory.setServiceClass(serviceEndpointInterface);
		URL url = ISServicesPortType.class.getResource("isServices.wsdl");
		serviceFactory.setWsdlURL(url);
		Service service = serviceFactory.create();
		EndpointInfo ei = service.getEndpointInfo(portName);
		JaxWsEndpointImpl jaxwsEndpoint = new JaxWsEndpointImpl(bus, service, ei);
		SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding());
		jaxWsSoapBinding.setMTOMEnabled(enableMTOM);
		
		jaxwsEndpoint.getBinding().getInInterceptors().add(new
TestMultipartMessageInterceptor());
		jaxwsEndpoint.getBinding().getOutInterceptors().add(new
TestAttachmentOutInterceptor());
		
		Client client = new ClientImpl(bus, jaxwsEndpoint);
		InvocationHandler ih = new JaxWsClientProxy(client,
jaxwsEndpoint.getJaxwsBinding());
		Object obj =
Proxy.newProxyInstance(serviceEndpointInterface.getClassLoader(), new
Class[] {
		serviceEndpointInterface, BindingProvider.class }, ih);
		return serviceEndpointInterface.cast(obj);
	}



-- 
View this message in context: http://www.nabble.com/JMS-SU%3A-server%27s-Publish-Address-is-null-tp24913559p24913559.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: JMS SU: server's Publish Address is null

Posted by Freeman Fang <fr...@gmail.com>.
Hi,

As I answered to you in another related thread, you need send cxf bc  
consumer over jms transport a mtom enabled SOAP message(so that  
include the attachment with soap message),
you can't send cxf bc consumer an attachment only, it must be a soap  
message (with mtom attachment).

Btw, the log
> INFO: Setting the server's publish address to be null

is expected here for jms transport.

Freeman

On 2009-8-11, at 下午4:17, lekkie wrote:

>
> When servicemix deploys my SU, it shows the ffg:
>
> Aug 11, 2009 8:22:55 AM org.apache.cxf.endpoint.ServerImpl  
> initDestination
> INFO: Setting the server's publish address to be null
> Aug 11, 2009 8:22:55 AM org.apache.cxf.transport.jms.JMSDestination  
> activate
> INFO: JMSServerTransport activate()....
>
>
> Subsequently, if I send an message (attachment) to the consumer SU  
> from a
> cxfclient, I get the following error message on ServiceMIX
>
> INFO: run the incoming message in the threadpool
> Aug 11, 2009 8:23:49 AM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
>
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:183)
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:54)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:220)
>        at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
> ationObserver.java:78)
>        at
> org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
> ava:209)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
> ation.java:352)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected
> character '-
> ' (code 45) in prolog; expected '<'
> at [row,col {unknown-source}]: [2,1]
>        at
> com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:
> 623)
>        at
> com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.ja
> va:2047)
>        at
> com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
>        at
> com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095
> )
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:83)
>        ... 8 more
> Aug 11, 2009 8:23:49 AM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.UnsupportedOperationException: A destination must be  
> specified.
>        at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
> cer.java:195)
>        at
> org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java
> :133)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.sendRespo
> nse(JMSDestination.java:528)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.commitOut
> putMessage(JMSDestination.java:473)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSOutputStream.doClose(J
> MSDestination.java:547)
>        at
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:16
> 7)
>        at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:6
> 6)
>        at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi
> ngInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:220)
>        at
> org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMess
> age(AbstractFaultChainInitiatorObserver.java:96)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:260)
>        at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
> ationObserver.java:78)
>        at
> org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
> ava:209)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
> ation.java:352)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
>        at java.lang.Thread.run(Thread.java:595)
> Aug 11, 2009 8:30:08 AM
> org.apache.cxf.transport.jms.JMSDestination$JMSExecutor
> run
> INFO: run the incoming message in the threadpool
> Aug 11, 2009 8:30:08 AM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:183)
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:54)
>        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept
> orChain.java:220)
>        at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti
> ationObserver.java:78)
>        at
> org.apache.cxf.transport.jms.JMSDestination.incoming(JMSDestination.j
> ava:209)
>        at
> org.apache.cxf.transport.jms.JMSDestination$JMSExecutor.run(JMSDestin
> ation.java:352)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec
> utor.java:650)
>        at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor
> .java:675)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected
> character '-
> ' (code 45) in prolog; expected '<'
> at [row,col {unknown-source}]: [2,1]
>        at
> com.ctc.wstx.sr.StreamScanner.throwUnexpectedChar(StreamScanner.java:
> 623)
>        at
> com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.ja
> va:2047)
>        at
> com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
>        at
> com.ctc.wstx.sr.BasicStreamReader.nextTag(BasicStreamReader.java:1095
> )
>        at
> org.apache.cxf.binding.soap.interceptor.ReadHeadersInterceptor.handle
> Message(ReadHeadersInterceptor.java:83)
>        ... 8 more
> Aug 11, 2009 8:30:08 AM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.UnsupportedOperationException: A destination must be  
> specified.
>        at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProdu
> cer.java:195)
>        at
> org.apache.activemq.ActiveMQQueueSender.send(ActiveMQQueueSender.java
>
>
>
> See client code below:
>
> ISServicesPortType mtomPort = createPort(MTOM_SERVICE, MTOM_PORT,
> ISServicesPortType.class, true);
>        try {
>            InputStream pre =
> this.getClass().getResourceAsStream("isServices.wsdl");
>            int fileSize = 0;
>            for (int i = pre.read(); i != -1; i = pre.read()) {
>                fileSize++;
>            }
>            Holder<DataHandler> param = new Holder<DataHandler>();
>
>            int count = 50;
>            byte[] data = new byte[fileSize *  count];
>            for (int x = 0; x < count; x++) {
>
> this.getClass().getResourceAsStream("isServices.wsdl").read(data,  
> fileSize *
> x, fileSize);
>            }
>
>            param.value = new DataHandler(new ByteArrayDataSource(data,
> "application/octet-stream"));
>            Holder<String> name = new Holder<String>("call detail");
>            is.services.types.ISBinaryType _sendAttachment_data = new
> ISBinaryType();
>            _sendAttachment_data.setAttachinfo(param.value);
>            _sendAttachment_data.setName(name.value);
>            mtomPort.sendAttachment(_sendAttachment_data);
> //            Assert.fail("Expect the exception here !");
> //            Assert.assertEquals("name unchanged", "return detail +  
> call
> detail", name.value);
> //            Assert.assertNotNull(param.value);
>            param.value.getInputStream().close();
>
>        } catch (SOAPFaultException ex) {
>        	Assert.assertTrue("Expect the configuration exception here",
> ex.getCause() instanceof
> org.apache.cxf.configuration.ConfigurationException);
>        }
>
> private static <T> T createPort(QName serviceName, QName portName,  
> Class<T>
> serviceEndpointInterface, boolean enableMTOM) throws Exception
>    {
>    	Bus bus = BusFactory.getDefaultBus();
> 		ReflectionServiceFactoryBean serviceFactory = new
> JaxWsServiceFactoryBean();
> 		serviceFactory.setBus(bus);
> 		serviceFactory.setServiceName(serviceName);
> 		serviceFactory.setServiceClass(serviceEndpointInterface);
> 		URL url = ISServicesPortType.class.getResource("isServices.wsdl");
> 		serviceFactory.setWsdlURL(url);
> 		Service service = serviceFactory.create();
> 		EndpointInfo ei = service.getEndpointInfo(portName);
> 		JaxWsEndpointImpl jaxwsEndpoint = new JaxWsEndpointImpl(bus,  
> service, ei);
> 		SOAPBinding jaxWsSoapBinding = new SOAPBindingImpl(ei.getBinding());
> 		jaxWsSoapBinding.setMTOMEnabled(enableMTOM);
> 		
> 		jaxwsEndpoint.getBinding().getInInterceptors().add(new
> TestMultipartMessageInterceptor());
> 		jaxwsEndpoint.getBinding().getOutInterceptors().add(new
> TestAttachmentOutInterceptor());
> 		
> 		Client client = new ClientImpl(bus, jaxwsEndpoint);
> 		InvocationHandler ih = new JaxWsClientProxy(client,
> jaxwsEndpoint.getJaxwsBinding());
> 		Object obj =
> Proxy.newProxyInstance(serviceEndpointInterface.getClassLoader(), new
> Class[] {
> 		serviceEndpointInterface, BindingProvider.class }, ih);
> 		return serviceEndpointInterface.cast(obj);
> 	}
>
>
>
> -- 
> View this message in context: http://www.nabble.com/JMS-SU%3A-server%27s-Publish-Address-is-null-tp24913559p24913559.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>


-- 
Freeman Fang
------------------------
Open Source SOA: http://fusesource.com