You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by Arif Mohd <ar...@wipro.com> on 2007/06/04 17:18:46 UTC
Not able to call POJO class
Hi,
Iam using servicemix3.1 my components configuration is as follows.
wire tap --> POJO class ---> JMS Topic
I have configured POJO class as follows in servicemix.xml
<sm:activationSpecs>
<sm:activationSpec id="BESMessageInterceptor"
service="foo:BESMessageInterceptor"
destinationService="bescocr:JMSConsumer">
<sm:component><bean
class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
</sm:activationSpec>
</sm:activationSpecs>
And my pojo class method is
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
log.info("Received message " + exchange);
NormalizedMessage message = exchange.getMessage("in");
System.out.println("_______________hai__________");
getMessageList().addMessage(message);
exchange.setStatus(ExchangeStatus.DONE);
context.getDeliveryChannel().send(exchange);
}
when i start my servicemix pojo class gets deployed the following output
depicts that
INFO - JBIContainer - Activating component for:
[container=ServiceMix,name=BESMessageInterceptor] with service
: BESMessageInterceptor component:
org.apache.servicemix.components.util.ComponentAdaptorMEListener for
com.e2e.bes.process
or.MessageInterceptor@18e252
INFO - ComponentMBeanImpl - Initializing component:
BESMessageInterceptor
INFO - ComponentMBeanImpl - Setting running state for
Component: servicemix-bpe to Started
But when i send a message to wire tap iam getting the following exception
WARN - DefaultBroker - ServiceName (BESMessageInterceptor)
specified for routing, but can't find it registered
WARN - DefaultBroker - ServiceName (BESMessageInterceptor)
specified for routing, but can't find it registered
ERROR - EIPComponent - Error processing exchange InOnly[
id: ID:EC4T16INT165110-2355-1180969168607-5:38
status: Active
role: provider
service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
endpoint: endpoint
in: <?xml version="1.0" encoding="UTF-8"?>
<Actual message which i got in tap>]
javax.jbi.messaging.MessagingException: Could not find route for exchange:
InOnly[
id: ID:EC4T16INT165110-2355-1180969168607-5:40
status: Active
role: provider
service: BESMessageInterceptor
in: <?xml version="1.0" encoding="UTF-8"?>
<Actual message which i got in tap>] for service: BESMessageInterceptor and
interface: null
at
org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
at
org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
at
org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
at
org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
at
org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
at
org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
at
org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
at
org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10951856
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
Thank you snyder,
Iam able to get the value of a node using xpath.
bsnyder wrote:
>
> On 6/5/07, Arif Mohd <ar...@wipro.com> wrote:
>>
>> Thank you gert,
>>
>> Iam successful but i have commented out the line
>> getMessageList().addMessage(message); given in the reciever example
>>
>> what is the purpose of this, i didn't got? will it give any problem if i
>> comment?
>>
>> Also how to use XPath instead of DOMSource to get value of particular
>> node
>> if u have some code snippet can you please provide
>
> I have used XPath to parse messages sent via ServiceMix but I've
> always done so in conjunction with a DOMSource object. Below is an
> example:
>
> String XPATH_IDENTITY_RESPONSE = "/*[local-name() =
> 'fooResponse']/*[local-name() = 'out']/text()";
>
> SourceTransformer sourceTransformer = new SourceTransformer();
> CachedXPathAPI xpath = new CachedXPathAPI();
> DOMSource xmlDom = sourceTransformer.toDOMSource(in.getContent());
> Node n = xpath.selectSingleNode(xmlDom.getNode(),
> XPATH_IDENTITY_RESPONSE);
>
> Bruce
> --
> perl -e 'print
> unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
> );'
>
> Apache Geronimo - http://geronimo.apache.org/
> Apache ActiveMQ - http://activemq.org/
> Apache ServiceMix - http://servicemix.org/
> Castor - http://castor.org/
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10983214
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Bruce Snyder <br...@gmail.com>.
On 6/5/07, Arif Mohd <ar...@wipro.com> wrote:
>
> Thank you gert,
>
> Iam successful but i have commented out the line
> getMessageList().addMessage(message); given in the reciever example
>
> what is the purpose of this, i didn't got? will it give any problem if i
> comment?
>
> Also how to use XPath instead of DOMSource to get value of particular node
> if u have some code snippet can you please provide
I have used XPath to parse messages sent via ServiceMix but I've
always done so in conjunction with a DOMSource object. Below is an
example:
String XPATH_IDENTITY_RESPONSE = "/*[local-name() =
'fooResponse']/*[local-name() = 'out']/text()";
SourceTransformer sourceTransformer = new SourceTransformer();
CachedXPathAPI xpath = new CachedXPathAPI();
DOMSource xmlDom = sourceTransformer.toDOMSource(in.getContent());
Node n = xpath.selectSingleNode(xmlDom.getNode(), XPATH_IDENTITY_RESPONSE);
Bruce
--
perl -e 'print unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
);'
Apache Geronimo - http://geronimo.apache.org/
Apache ActiveMQ - http://activemq.org/
Apache ServiceMix - http://servicemix.org/
Castor - http://castor.org/
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
Thank you gert,
Iam successful but i have commented out the line
getMessageList().addMessage(message); given in the reciever example
what is the purpose of this, i didn't got? will it give any problem if i
comment?
Also how to use XPath instead of DOMSource to get value of particular node
if u have some code snippet can you please provide
Now my method is
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
log.info("Received
message________________Exchange9____________________ ");
if (exchange.getStatus() == ExchangeStatus.DONE) {
return;
}
NormalizedMessage message = exchange.getMessage("in");
//getMessageList().addMessage(message);
message.setProperty("ActorID","arif");
NormalizedMessage out = exchange.createMessage();
out.setContent(message.getContent());
exchange.setMessage(out, "out");
context.getDeliveryChannel().send(exchange);
}
Gert Vanthienen wrote:
>
> Arif,
>
> You shouldn't set the DONE status if you're in the provider role of an
> InOut exchange. You only have to answer the request (set the 'out'
> message as you've done) and send it.
>
> Gert
>
> Arif Mohd wrote:
>> Hi Gert,
>>
>> Iam little bit confused i have written my method as follows
>>
>> public void onMessageExchange(MessageExchange exchange) throws
>> MessagingException {
>> log.info("Received
>> message________________Exchange8____________________ ");
>> if (exchange.getStatus() == ExchangeStatus.DONE) {
>> return;
>> }
>> NormalizedMessage message = exchange.getMessage("in");
>> //getMessageList().addMessage(message);
>> // TODO ... handle the in message
>> // If the MEP is an InOnly, RobustInOnly, you have to set the
>> exchange to DONE status
>> // else, you have to create an Out message and populate it
>> // For now, just echo back
>> message.setProperty("ActorID","arif");
>> NormalizedMessage out = exchange.createMessage();
>> out.setContent(message.getContent());
>> exchange.setMessage(out, "out");
>> //channel.send(exchange);
>>
>> if (exchange.getStatus() == ExchangeStatus.DONE) {
>> context.getDeliveryChannel().send(exchange);
>> }
>> else{
>> exchange.setStatus(ExchangeStatus.DONE);
>> context.getDeliveryChannel().send(exchange);
>> }
>> }
>>
>>
>> and iam getting the following exception
>>
>> INFO - MessageInterceptor - Received
>> message________________Exchange8____________________
>> ___________________Enered else _________________________
>> INFO - MessageInterceptor - Received
>> message________________Exchange8____________________
>> ___________________Enered else _________________________
>> ERROR - SedaQueue -
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@112fe3e got error
>> processing InOut[
>> id: ID:EC4T16INT165110-2253-1181053111979-5:54
>> status: Done
>> role: provider
>> service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>> endpoint: endpoint
>> in: <My XML Message>
>> out:<My XML Message>
>> ]
>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>> at
>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
>> at
>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>> at java.lang.Thread.run(Thread.java:595)
>> ERROR - SedaQueue -
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@91edbc got error
>> processing InOut[
>> id: ID:EC4T16INT165110-2253-1181053111979-5:55
>> status: Done
>> role: provider
>> service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>> endpoint: endpoint
>> in: <My XML Message>
>> out:<My XML Message>
>> ]
>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>> at
>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
>> at
>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>> at java.lang.Thread.run(Thread.java:595)
>> [Fatal Error] :-1:-1: Premature end of file.
>> [Fatal Error] :-1:-1: Premature end of file.
>>
>> what iam doing wrong here ?
>>
>>
>> Gert Vanthienen wrote:
>>
>>> Arif,
>>>
>>> Take a look at the 'Invocation example' drawing on the bottom of page
>>> http://incubator.apache.org/servicemix/5-jbi.html.
>>>
>>> This explains what is happening in your POJO. First it accepts a
>>> request (status = ACTIVE) and it is supposed to set the response (the
>>> 'out' message). That is why you get the second exception (after you
>>> remove the call to setStatus(DONE) : you should first set the response
>>> message before sending it back again. You can use the helper methods on
>>> the MessageUtil class if you just want to start by returning the
>>> incoming message.
>>>
>>> You get the same message exchange a second time, after your consumer
>>> (i.c. your eip:pipeline) has received the response and has set the DONE
>>> status. You shouldn't be setting that in this case. Probably, you're
>>> fine if you just add this snippet to the beginning of your method,
>>> ignoring DONE message exchanges.
>>> if (exchange.getStatus() == ExchangeStatus.DONE) {
>>> return;
>>> }
>>>
>>> Gert
>>>
>>> Arif Mohd wrote:
>>>
>>>> Gert,
>>>>
>>>> I have removed destinationservice for the pojo from servicemix.xml
>>>> and
>>>> iam using eip:pipleine as suggested by you but iam getting the
>>>> following
>>>> exception now.
>>>>
>>>> Now my configuration is wireTap--->Pipeline-->JMS Topic (Pipline
>>>> will
>>>> call POJO)
>>>>
>>>> Exception is
>>>>
>>>> ]
>>>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>>>> at
>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>> at
>>>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>>>> at
>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>>>
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>> at java.lang.Thread.run(Thread.java:595)
>>>>
>>>>
>>>> if i remove the line "exchange.setStatus(ExchangeStatus.DONE);" then
>>>> iam
>>>> getting the following exception
>>>>
>>>> error: java.lang.IllegalStateException: Exchange status is Active but
>>>> has
>>>> no Out nor Fault message
>>>> ]
>>>> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
>>>> at
>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>> at
>>>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>>>> at
>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>>>
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>> at java.lang.Thread.run(Thread.java:595)
>>>>
>>>>
>>>> When to use ExchangeStatus.DONE ?
>>>>
>>>> shall i have to change the code in the line
>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>
>>>> Iam using the reciever component as it is provided in servicemix site
>>>> just
>>>> by changing the servicename as suggested by you.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Gert Vanthienen wrote:
>>>>
>>>>
>>>>> Arif,
>>>>>
>>>>> If you have a DOMSource as the content, you can use getNode() to
>>>>> navigate the content or use e.g. XPath to get the data out of there.
>>>>>
>>>>> I don't know how you can send a message to the destinationService you
>>>>> configured in your XML file. I usually take an eip:pipeline, which
>>>>> receives the InOnly message, does the InOut call to the POJO and sends
>>>>> the result to the next hop.
>>>>>
>>>>> Gert
>>>>>
>>>>> Arif Mohd wrote:
>>>>>
>>>>>
>>>>>> Yes iam able to delploy the POJO componet.
>>>>>>
>>>>>> I have given the servicename correctly in init method and iam able
>>>>>> to
>>>>>> invoke the pojo but the message is not going to destination after
>>>>>> this
>>>>>> i.e,
>>>>>> to the topic , configuration for JMSConsumer is as follows
>>>>>>
>>>>>> <jms:endpoint service="bescocr:JMSConsumer"
>>>>>> endpoint="jms"
>>>>>> role="consumer"
>>>>>> destinationStyle="topic"
>>>>>> jmsProviderDestinationName="PHB800"
>>>>>> connectionFactory="#jmsFactory"
>>>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>>>>>> />
>>>>>>
>>>>>> <bean id="jmsFactory"
>>>>>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>>>>> <property name="connectionFactory">
>>>>>> <bean
>>>>>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>>>>> <property name="brokerURL"
>>>>>> value="tcp://localhost:61616"/>
>>>>>> </bean>
>>>>>> </property>
>>>>>> </bean>
>>>>>>
>>>>>> One more question How to get the value of a specific tag from the
>>>>>> message
>>>>>> which i got in onMessageExchange method?
>>>>>>
>>>>>> When i print the value of message.getContent() iam getting output as
>>>>>> folllows
>>>>>>
>>>>>> javax.xml.transform.dom.DOMSource@b5edd1
>>>>>> - MessageInterceptor - Received message InOnly[
>>>>>> : ID:EC4T16INT165110-4176-1181029075183-5:64
>>>>>> atus: Active
>>>>>> le: provider
>>>>>> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>>>>>> dpoint: endpoint
>>>>>> : <?xml version="1.0" encoding="UTF-8"?><Address
>>>>>> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
>>>>>> p://model.besgv.e2e.xxx.com"
>>>>>> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
>>>>>> xmlns:urn="urn:soap:bes-binding">
>>>>>> <Body>
>>>>>> <FirstName>yyy</FirstName>
>>>>>> <eid>123</eid>
>>>>>> </Body>
>>>>>> </Address>
>>>>>>
>>>>>> i need to get the value of eid and set the one message property to
>>>>>> that
>>>>>> value
>>>>>>
>>>>>>
>>>>>> Arif Mohd wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> i have added this configuration to conf/servicemix.xml
>>>>>>>
>>>>>>> Gert Vanthienen wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Arif,
>>>>>>>>
>>>>>>>> Have you added this configuration to conf/servicemix.xml or have
>>>>>>>> you
>>>>>>>> built a servicemix-lwcontainer SU to hold you service?
>>>>>>>>
>>>>>>>> Have you activated the endpoint? Something like:
>>>>>>>> public void init(ComponentContext context) throws JBIException {
>>>>>>>> this.context = context;
>>>>>>>> context.activateEndpoint(new QName("http://your.namespace",
>>>>>>>> "service"),
>>>>>>>> "endpoint");
>>>>>>>> }
>>>>>>>>
>>>>>>>> Gert
>>>>>>>>
>>>>>>>>
>>>>>>>> Arif Mohd wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> Iam using servicemix3.1 my components configuration is as
>>>>>>>>> follows.
>>>>>>>>>
>>>>>>>>> wire tap --> POJO class ---> JMS Topic
>>>>>>>>>
>>>>>>>>> I have configured POJO class as follows in servicemix.xml
>>>>>>>>>
>>>>>>>>> <sm:activationSpecs>
>>>>>>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>>>>>>> service="foo:BESMessageInterceptor"
>>>>>>>>> destinationService="bescocr:JMSConsumer">
>>>>>>>>> <sm:component><bean
>>>>>>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>>>>>>> </sm:activationSpec>
>>>>>>>>> </sm:activationSpecs>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> And my pojo class method is
>>>>>>>>>
>>>>>>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>>>>>>> MessagingException {
>>>>>>>>> log.info("Received message " + exchange);
>>>>>>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>>>>>> System.out.println("_______________hai__________");
>>>>>>>>> getMessageList().addMessage(message);
>>>>>>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>>>>>>> context.getDeliveryChannel().send(exchange);
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> when i start my servicemix pojo class gets deployed the following
>>>>>>>>> output
>>>>>>>>> depicts that
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> INFO - JBIContainer - Activating component for:
>>>>>>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>>>>>>> : BESMessageInterceptor component:
>>>>>>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener
>>>>>>>>> for
>>>>>>>>> com.e2e.bes.process
>>>>>>>>> or.MessageInterceptor@18e252
>>>>>>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>>>>>>> BESMessageInterceptor
>>>>>>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>>>>>>> Component: servicemix-bpe to Started
>>>>>>>>>
>>>>>>>>> But when i send a message to wire tap iam getting the following
>>>>>>>>> exception
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>>>> registered
>>>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>>>> registered
>>>>>>>>> ERROR - EIPComponent - Error processing exchange
>>>>>>>>> InOnly[
>>>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>>>>>>> status: Active
>>>>>>>>> role: provider
>>>>>>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>>>>>>> endpoint: endpoint
>>>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>> <Actual message which i got in tap>]
>>>>>>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>>>>>>> exchange: InOnly[
>>>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>>>>>>> status: Active
>>>>>>>>> role: provider
>>>>>>>>> service: BESMessageInterceptor
>>>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>>
>>>>>>>>> <Actual message which i got in tap>] for service:
>>>>>>>>> BESMessageInterceptor
>>>>>>>>> and interface: null
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>>>>>>> at
>>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>>>>>> at
>>>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>>>>>> at
>>>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10971826
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Gert Vanthienen <ge...@skynet.be>.
Arif,
You shouldn't set the DONE status if you're in the provider role of an
InOut exchange. You only have to answer the request (set the 'out'
message as you've done) and send it.
Gert
Arif Mohd wrote:
> Hi Gert,
>
> Iam little bit confused i have written my method as follows
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
> log.info("Received
> message________________Exchange8____________________ ");
> if (exchange.getStatus() == ExchangeStatus.DONE) {
> return;
> }
> NormalizedMessage message = exchange.getMessage("in");
> //getMessageList().addMessage(message);
> // TODO ... handle the in message
> // If the MEP is an InOnly, RobustInOnly, you have to set the
> exchange to DONE status
> // else, you have to create an Out message and populate it
> // For now, just echo back
> message.setProperty("ActorID","arif");
> NormalizedMessage out = exchange.createMessage();
> out.setContent(message.getContent());
> exchange.setMessage(out, "out");
> //channel.send(exchange);
>
> if (exchange.getStatus() == ExchangeStatus.DONE) {
> context.getDeliveryChannel().send(exchange);
> }
> else{
> exchange.setStatus(ExchangeStatus.DONE);
> context.getDeliveryChannel().send(exchange);
> }
> }
>
>
> and iam getting the following exception
>
> INFO - MessageInterceptor - Received
> message________________Exchange8____________________
> ___________________Enered else _________________________
> INFO - MessageInterceptor - Received
> message________________Exchange8____________________
> ___________________Enered else _________________________
> ERROR - SedaQueue -
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@112fe3e got error
> processing InOut[
> id: ID:EC4T16INT165110-2253-1181053111979-5:54
> status: Done
> role: provider
> service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
> endpoint: endpoint
> in: <My XML Message>
> out:<My XML Message>
> ]
> javax.jbi.messaging.MessagingException: illegal exchange status: done
> at
> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
> at
> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
> ERROR - SedaQueue -
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@91edbc got error
> processing InOut[
> id: ID:EC4T16INT165110-2253-1181053111979-5:55
> status: Done
> role: provider
> service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
> endpoint: endpoint
> in: <My XML Message>
> out:<My XML Message>
> ]
> javax.jbi.messaging.MessagingException: illegal exchange status: done
> at
> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
> at
> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
> [Fatal Error] :-1:-1: Premature end of file.
> [Fatal Error] :-1:-1: Premature end of file.
>
> what iam doing wrong here ?
>
>
> Gert Vanthienen wrote:
>
>> Arif,
>>
>> Take a look at the 'Invocation example' drawing on the bottom of page
>> http://incubator.apache.org/servicemix/5-jbi.html.
>>
>> This explains what is happening in your POJO. First it accepts a
>> request (status = ACTIVE) and it is supposed to set the response (the
>> 'out' message). That is why you get the second exception (after you
>> remove the call to setStatus(DONE) : you should first set the response
>> message before sending it back again. You can use the helper methods on
>> the MessageUtil class if you just want to start by returning the
>> incoming message.
>>
>> You get the same message exchange a second time, after your consumer
>> (i.c. your eip:pipeline) has received the response and has set the DONE
>> status. You shouldn't be setting that in this case. Probably, you're
>> fine if you just add this snippet to the beginning of your method,
>> ignoring DONE message exchanges.
>> if (exchange.getStatus() == ExchangeStatus.DONE) {
>> return;
>> }
>>
>> Gert
>>
>> Arif Mohd wrote:
>>
>>> Gert,
>>>
>>> I have removed destinationservice for the pojo from servicemix.xml and
>>> iam using eip:pipleine as suggested by you but iam getting the following
>>> exception now.
>>>
>>> Now my configuration is wireTap--->Pipeline-->JMS Topic (Pipline will
>>> call POJO)
>>>
>>> Exception is
>>>
>>> ]
>>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>>> at
>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>> at
>>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>>> at
>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>>
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>> at java.lang.Thread.run(Thread.java:595)
>>>
>>>
>>> if i remove the line "exchange.setStatus(ExchangeStatus.DONE);" then iam
>>> getting the following exception
>>>
>>> error: java.lang.IllegalStateException: Exchange status is Active but
>>> has
>>> no Out nor Fault message
>>> ]
>>> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
>>> at
>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>> at
>>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>>> at
>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>>
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>> at java.lang.Thread.run(Thread.java:595)
>>>
>>>
>>> When to use ExchangeStatus.DONE ?
>>>
>>> shall i have to change the code in the line
>>> NormalizedMessage message = exchange.getMessage("in");
>>>
>>> Iam using the reciever component as it is provided in servicemix site
>>> just
>>> by changing the servicename as suggested by you.
>>>
>>>
>>>
>>>
>>>
>>>
>>> Gert Vanthienen wrote:
>>>
>>>
>>>> Arif,
>>>>
>>>> If you have a DOMSource as the content, you can use getNode() to
>>>> navigate the content or use e.g. XPath to get the data out of there.
>>>>
>>>> I don't know how you can send a message to the destinationService you
>>>> configured in your XML file. I usually take an eip:pipeline, which
>>>> receives the InOnly message, does the InOut call to the POJO and sends
>>>> the result to the next hop.
>>>>
>>>> Gert
>>>>
>>>> Arif Mohd wrote:
>>>>
>>>>
>>>>> Yes iam able to delploy the POJO componet.
>>>>>
>>>>> I have given the servicename correctly in init method and iam able
>>>>> to
>>>>> invoke the pojo but the message is not going to destination after this
>>>>> i.e,
>>>>> to the topic , configuration for JMSConsumer is as follows
>>>>>
>>>>> <jms:endpoint service="bescocr:JMSConsumer"
>>>>> endpoint="jms"
>>>>> role="consumer"
>>>>> destinationStyle="topic"
>>>>> jmsProviderDestinationName="PHB800"
>>>>> connectionFactory="#jmsFactory"
>>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>>>>> />
>>>>>
>>>>> <bean id="jmsFactory"
>>>>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>>>> <property name="connectionFactory">
>>>>> <bean
>>>>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>>>> <property name="brokerURL"
>>>>> value="tcp://localhost:61616"/>
>>>>> </bean>
>>>>> </property>
>>>>> </bean>
>>>>>
>>>>> One more question How to get the value of a specific tag from the
>>>>> message
>>>>> which i got in onMessageExchange method?
>>>>>
>>>>> When i print the value of message.getContent() iam getting output as
>>>>> folllows
>>>>>
>>>>> javax.xml.transform.dom.DOMSource@b5edd1
>>>>> - MessageInterceptor - Received message InOnly[
>>>>> : ID:EC4T16INT165110-4176-1181029075183-5:64
>>>>> atus: Active
>>>>> le: provider
>>>>> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>>>>> dpoint: endpoint
>>>>> : <?xml version="1.0" encoding="UTF-8"?><Address
>>>>> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
>>>>> p://model.besgv.e2e.xxx.com"
>>>>> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xmlns:urn="urn:soap:bes-binding">
>>>>> <Body>
>>>>> <FirstName>yyy</FirstName>
>>>>> <eid>123</eid>
>>>>> </Body>
>>>>> </Address>
>>>>>
>>>>> i need to get the value of eid and set the one message property to that
>>>>> value
>>>>>
>>>>>
>>>>> Arif Mohd wrote:
>>>>>
>>>>>
>>>>>
>>>>>> i have added this configuration to conf/servicemix.xml
>>>>>>
>>>>>> Gert Vanthienen wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Arif,
>>>>>>>
>>>>>>> Have you added this configuration to conf/servicemix.xml or have you
>>>>>>> built a servicemix-lwcontainer SU to hold you service?
>>>>>>>
>>>>>>> Have you activated the endpoint? Something like:
>>>>>>> public void init(ComponentContext context) throws JBIException {
>>>>>>> this.context = context;
>>>>>>> context.activateEndpoint(new QName("http://your.namespace",
>>>>>>> "service"),
>>>>>>> "endpoint");
>>>>>>> }
>>>>>>>
>>>>>>> Gert
>>>>>>>
>>>>>>>
>>>>>>> Arif Mohd wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Iam using servicemix3.1 my components configuration is as
>>>>>>>> follows.
>>>>>>>>
>>>>>>>> wire tap --> POJO class ---> JMS Topic
>>>>>>>>
>>>>>>>> I have configured POJO class as follows in servicemix.xml
>>>>>>>>
>>>>>>>> <sm:activationSpecs>
>>>>>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>>>>>> service="foo:BESMessageInterceptor"
>>>>>>>> destinationService="bescocr:JMSConsumer">
>>>>>>>> <sm:component><bean
>>>>>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>>>>>> </sm:activationSpec>
>>>>>>>> </sm:activationSpecs>
>>>>>>>>
>>>>>>>>
>>>>>>>> And my pojo class method is
>>>>>>>>
>>>>>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>>>>>> MessagingException {
>>>>>>>> log.info("Received message " + exchange);
>>>>>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>>>>> System.out.println("_______________hai__________");
>>>>>>>> getMessageList().addMessage(message);
>>>>>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>>>>>> context.getDeliveryChannel().send(exchange);
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> when i start my servicemix pojo class gets deployed the following
>>>>>>>> output
>>>>>>>> depicts that
>>>>>>>>
>>>>>>>>
>>>>>>>> INFO - JBIContainer - Activating component for:
>>>>>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>>>>>> : BESMessageInterceptor component:
>>>>>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>>>>>>> com.e2e.bes.process
>>>>>>>> or.MessageInterceptor@18e252
>>>>>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>>>>>> BESMessageInterceptor
>>>>>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>>>>>> Component: servicemix-bpe to Started
>>>>>>>>
>>>>>>>> But when i send a message to wire tap iam getting the following
>>>>>>>> exception
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>>> registered
>>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>>> registered
>>>>>>>> ERROR - EIPComponent - Error processing exchange
>>>>>>>> InOnly[
>>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>>>>>> status: Active
>>>>>>>> role: provider
>>>>>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>>>>>> endpoint: endpoint
>>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>> <Actual message which i got in tap>]
>>>>>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>>>>>> exchange: InOnly[
>>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>>>>>> status: Active
>>>>>>>> role: provider
>>>>>>>> service: BESMessageInterceptor
>>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>>
>>>>>>>> <Actual message which i got in tap>] for service:
>>>>>>>> BESMessageInterceptor
>>>>>>>> and interface: null
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>>>>>> at
>>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>>>>> at
>>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>>>>> at
>>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
Hi Gert,
Iam little bit confused i have written my method as follows
public void onMessageExchange(MessageExchange exchange) throws
MessagingException {
log.info("Received
message________________Exchange8____________________ ");
if (exchange.getStatus() == ExchangeStatus.DONE) {
return;
}
NormalizedMessage message = exchange.getMessage("in");
//getMessageList().addMessage(message);
// TODO ... handle the in message
// If the MEP is an InOnly, RobustInOnly, you have to set the
exchange to DONE status
// else, you have to create an Out message and populate it
// For now, just echo back
message.setProperty("ActorID","arif");
NormalizedMessage out = exchange.createMessage();
out.setContent(message.getContent());
exchange.setMessage(out, "out");
//channel.send(exchange);
if (exchange.getStatus() == ExchangeStatus.DONE) {
context.getDeliveryChannel().send(exchange);
}
else{
exchange.setStatus(ExchangeStatus.DONE);
context.getDeliveryChannel().send(exchange);
}
}
and iam getting the following exception
INFO - MessageInterceptor - Received
message________________Exchange8____________________
___________________Enered else _________________________
INFO - MessageInterceptor - Received
message________________Exchange8____________________
___________________Enered else _________________________
ERROR - SedaQueue -
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@112fe3e got error
processing InOut[
id: ID:EC4T16INT165110-2253-1181053111979-5:54
status: Done
role: provider
service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
endpoint: endpoint
in: <My XML Message>
out:<My XML Message>
]
javax.jbi.messaging.MessagingException: illegal exchange status: done
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
at
org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
ERROR - SedaQueue -
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1@91edbc got error
processing InOut[
id: ID:EC4T16INT165110-2253-1181053111979-5:55
status: Done
role: provider
service: {http://xxx.com/bescocr_031807}BESMessageInterceptor
endpoint: endpoint
in: <My XML Message>
out:<My XML Message>
]
javax.jbi.messaging.MessagingException: illegal exchange status: done
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:78)
at
org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
[Fatal Error] :-1:-1: Premature end of file.
[Fatal Error] :-1:-1: Premature end of file.
what iam doing wrong here ?
Gert Vanthienen wrote:
>
> Arif,
>
> Take a look at the 'Invocation example' drawing on the bottom of page
> http://incubator.apache.org/servicemix/5-jbi.html.
>
> This explains what is happening in your POJO. First it accepts a
> request (status = ACTIVE) and it is supposed to set the response (the
> 'out' message). That is why you get the second exception (after you
> remove the call to setStatus(DONE) : you should first set the response
> message before sending it back again. You can use the helper methods on
> the MessageUtil class if you just want to start by returning the
> incoming message.
>
> You get the same message exchange a second time, after your consumer
> (i.c. your eip:pipeline) has received the response and has set the DONE
> status. You shouldn't be setting that in this case. Probably, you're
> fine if you just add this snippet to the beginning of your method,
> ignoring DONE message exchanges.
> if (exchange.getStatus() == ExchangeStatus.DONE) {
> return;
> }
>
> Gert
>
> Arif Mohd wrote:
>> Gert,
>>
>> I have removed destinationservice for the pojo from servicemix.xml and
>> iam using eip:pipleine as suggested by you but iam getting the following
>> exception now.
>>
>> Now my configuration is wireTap--->Pipeline-->JMS Topic (Pipline will
>> call POJO)
>>
>> Exception is
>>
>> ]
>> javax.jbi.messaging.MessagingException: illegal exchange status: done
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>> at
>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>> at
>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>> at java.lang.Thread.run(Thread.java:595)
>>
>>
>> if i remove the line "exchange.setStatus(ExchangeStatus.DONE);" then iam
>> getting the following exception
>>
>> error: java.lang.IllegalStateException: Exchange status is Active but
>> has
>> no Out nor Fault message
>> ]
>> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
>> at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>> at
>> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
>> at
>> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>>
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>> at java.lang.Thread.run(Thread.java:595)
>>
>>
>> When to use ExchangeStatus.DONE ?
>>
>> shall i have to change the code in the line
>> NormalizedMessage message = exchange.getMessage("in");
>>
>> Iam using the reciever component as it is provided in servicemix site
>> just
>> by changing the servicename as suggested by you.
>>
>>
>>
>>
>>
>>
>> Gert Vanthienen wrote:
>>
>>> Arif,
>>>
>>> If you have a DOMSource as the content, you can use getNode() to
>>> navigate the content or use e.g. XPath to get the data out of there.
>>>
>>> I don't know how you can send a message to the destinationService you
>>> configured in your XML file. I usually take an eip:pipeline, which
>>> receives the InOnly message, does the InOut call to the POJO and sends
>>> the result to the next hop.
>>>
>>> Gert
>>>
>>> Arif Mohd wrote:
>>>
>>>> Yes iam able to delploy the POJO componet.
>>>>
>>>> I have given the servicename correctly in init method and iam able
>>>> to
>>>> invoke the pojo but the message is not going to destination after this
>>>> i.e,
>>>> to the topic , configuration for JMSConsumer is as follows
>>>>
>>>> <jms:endpoint service="bescocr:JMSConsumer"
>>>> endpoint="jms"
>>>> role="consumer"
>>>> destinationStyle="topic"
>>>> jmsProviderDestinationName="PHB800"
>>>> connectionFactory="#jmsFactory"
>>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>>>> />
>>>>
>>>> <bean id="jmsFactory"
>>>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>>> <property name="connectionFactory">
>>>> <bean
>>>> class="org.apache.activemq.ActiveMQConnectionFactory">
>>>> <property name="brokerURL"
>>>> value="tcp://localhost:61616"/>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>>
>>>> One more question How to get the value of a specific tag from the
>>>> message
>>>> which i got in onMessageExchange method?
>>>>
>>>> When i print the value of message.getContent() iam getting output as
>>>> folllows
>>>>
>>>> javax.xml.transform.dom.DOMSource@b5edd1
>>>> - MessageInterceptor - Received message InOnly[
>>>> : ID:EC4T16INT165110-4176-1181029075183-5:64
>>>> atus: Active
>>>> le: provider
>>>> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>>>> dpoint: endpoint
>>>> : <?xml version="1.0" encoding="UTF-8"?><Address
>>>> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
>>>> p://model.besgv.e2e.xxx.com"
>>>> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
>>>> xmlns:urn="urn:soap:bes-binding">
>>>> <Body>
>>>> <FirstName>yyy</FirstName>
>>>> <eid>123</eid>
>>>> </Body>
>>>> </Address>
>>>>
>>>> i need to get the value of eid and set the one message property to that
>>>> value
>>>>
>>>>
>>>> Arif Mohd wrote:
>>>>
>>>>
>>>>> i have added this configuration to conf/servicemix.xml
>>>>>
>>>>> Gert Vanthienen wrote:
>>>>>
>>>>>
>>>>>> Arif,
>>>>>>
>>>>>> Have you added this configuration to conf/servicemix.xml or have you
>>>>>> built a servicemix-lwcontainer SU to hold you service?
>>>>>>
>>>>>> Have you activated the endpoint? Something like:
>>>>>> public void init(ComponentContext context) throws JBIException {
>>>>>> this.context = context;
>>>>>> context.activateEndpoint(new QName("http://your.namespace",
>>>>>> "service"),
>>>>>> "endpoint");
>>>>>> }
>>>>>>
>>>>>> Gert
>>>>>>
>>>>>>
>>>>>> Arif Mohd wrote:
>>>>>>
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Iam using servicemix3.1 my components configuration is as
>>>>>>> follows.
>>>>>>>
>>>>>>> wire tap --> POJO class ---> JMS Topic
>>>>>>>
>>>>>>> I have configured POJO class as follows in servicemix.xml
>>>>>>>
>>>>>>> <sm:activationSpecs>
>>>>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>>>>> service="foo:BESMessageInterceptor"
>>>>>>> destinationService="bescocr:JMSConsumer">
>>>>>>> <sm:component><bean
>>>>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>>>>> </sm:activationSpec>
>>>>>>> </sm:activationSpecs>
>>>>>>>
>>>>>>>
>>>>>>> And my pojo class method is
>>>>>>>
>>>>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>>>>> MessagingException {
>>>>>>> log.info("Received message " + exchange);
>>>>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>>>> System.out.println("_______________hai__________");
>>>>>>> getMessageList().addMessage(message);
>>>>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>>>>> context.getDeliveryChannel().send(exchange);
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> when i start my servicemix pojo class gets deployed the following
>>>>>>> output
>>>>>>> depicts that
>>>>>>>
>>>>>>>
>>>>>>> INFO - JBIContainer - Activating component for:
>>>>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>>>>> : BESMessageInterceptor component:
>>>>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>>>>>> com.e2e.bes.process
>>>>>>> or.MessageInterceptor@18e252
>>>>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>>>>> BESMessageInterceptor
>>>>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>>>>> Component: servicemix-bpe to Started
>>>>>>>
>>>>>>> But when i send a message to wire tap iam getting the following
>>>>>>> exception
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>> registered
>>>>>>> WARN - DefaultBroker - ServiceName
>>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>>> registered
>>>>>>> ERROR - EIPComponent - Error processing exchange
>>>>>>> InOnly[
>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>>>>> status: Active
>>>>>>> role: provider
>>>>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>>>>> endpoint: endpoint
>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>> <Actual message which i got in tap>]
>>>>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>>>>> exchange: InOnly[
>>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>>>>> status: Active
>>>>>>> role: provider
>>>>>>> service: BESMessageInterceptor
>>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>>
>>>>>>> <Actual message which i got in tap>] for service:
>>>>>>> BESMessageInterceptor
>>>>>>> and interface: null
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>>>>> at
>>>>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>>>>> at
>>>>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>>>>> at
>>>>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>>>>> at
>>>>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>>>>> at
>>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>>>> at
>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>>>> at
>>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10970661
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Gert Vanthienen <ge...@skynet.be>.
Arif,
Take a look at the 'Invocation example' drawing on the bottom of page
http://incubator.apache.org/servicemix/5-jbi.html.
This explains what is happening in your POJO. First it accepts a
request (status = ACTIVE) and it is supposed to set the response (the
'out' message). That is why you get the second exception (after you
remove the call to setStatus(DONE) : you should first set the response
message before sending it back again. You can use the helper methods on
the MessageUtil class if you just want to start by returning the
incoming message.
You get the same message exchange a second time, after your consumer
(i.c. your eip:pipeline) has received the response and has set the DONE
status. You shouldn't be setting that in this case. Probably, you're
fine if you just add this snippet to the beginning of your method,
ignoring DONE message exchanges.
if (exchange.getStatus() == ExchangeStatus.DONE) {
return;
}
Gert
Arif Mohd wrote:
> Gert,
>
> I have removed destinationservice for the pojo from servicemix.xml and
> iam using eip:pipleine as suggested by you but iam getting the following
> exception now.
>
> Now my configuration is wireTap--->Pipeline-->JMS Topic (Pipline will
> call POJO)
>
> Exception is
>
> ]
> javax.jbi.messaging.MessagingException: illegal exchange status: done
> at
> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
> at
> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
>
>
> if i remove the line "exchange.setStatus(ExchangeStatus.DONE);" then iam
> getting the following exception
>
> error: java.lang.IllegalStateException: Exchange status is Active but has
> no Out nor Fault message
> ]
> javax.jbi.messaging.MessagingException: illegal call to send / sendSync
> at
> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
> at
> org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
>
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
>
>
> When to use ExchangeStatus.DONE ?
>
> shall i have to change the code in the line
> NormalizedMessage message = exchange.getMessage("in");
>
> Iam using the reciever component as it is provided in servicemix site just
> by changing the servicename as suggested by you.
>
>
>
>
>
>
> Gert Vanthienen wrote:
>
>> Arif,
>>
>> If you have a DOMSource as the content, you can use getNode() to
>> navigate the content or use e.g. XPath to get the data out of there.
>>
>> I don't know how you can send a message to the destinationService you
>> configured in your XML file. I usually take an eip:pipeline, which
>> receives the InOnly message, does the InOut call to the POJO and sends
>> the result to the next hop.
>>
>> Gert
>>
>> Arif Mohd wrote:
>>
>>> Yes iam able to delploy the POJO componet.
>>>
>>> I have given the servicename correctly in init method and iam able to
>>> invoke the pojo but the message is not going to destination after this
>>> i.e,
>>> to the topic , configuration for JMSConsumer is as follows
>>>
>>> <jms:endpoint service="bescocr:JMSConsumer"
>>> endpoint="jms"
>>> role="consumer"
>>> destinationStyle="topic"
>>> jmsProviderDestinationName="PHB800"
>>> connectionFactory="#jmsFactory"
>>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>>> />
>>>
>>> <bean id="jmsFactory"
>>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>> <property name="connectionFactory">
>>> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
>>> <property name="brokerURL"
>>> value="tcp://localhost:61616"/>
>>> </bean>
>>> </property>
>>> </bean>
>>>
>>> One more question How to get the value of a specific tag from the message
>>> which i got in onMessageExchange method?
>>>
>>> When i print the value of message.getContent() iam getting output as
>>> folllows
>>>
>>> javax.xml.transform.dom.DOMSource@b5edd1
>>> - MessageInterceptor - Received message InOnly[
>>> : ID:EC4T16INT165110-4176-1181029075183-5:64
>>> atus: Active
>>> le: provider
>>> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>>> dpoint: endpoint
>>> : <?xml version="1.0" encoding="UTF-8"?><Address
>>> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
>>> p://model.besgv.e2e.xxx.com"
>>> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
>>> xmlns:urn="urn:soap:bes-binding">
>>> <Body>
>>> <FirstName>yyy</FirstName>
>>> <eid>123</eid>
>>> </Body>
>>> </Address>
>>>
>>> i need to get the value of eid and set the one message property to that
>>> value
>>>
>>>
>>> Arif Mohd wrote:
>>>
>>>
>>>> i have added this configuration to conf/servicemix.xml
>>>>
>>>> Gert Vanthienen wrote:
>>>>
>>>>
>>>>> Arif,
>>>>>
>>>>> Have you added this configuration to conf/servicemix.xml or have you
>>>>> built a servicemix-lwcontainer SU to hold you service?
>>>>>
>>>>> Have you activated the endpoint? Something like:
>>>>> public void init(ComponentContext context) throws JBIException {
>>>>> this.context = context;
>>>>> context.activateEndpoint(new QName("http://your.namespace",
>>>>> "service"),
>>>>> "endpoint");
>>>>> }
>>>>>
>>>>> Gert
>>>>>
>>>>>
>>>>> Arif Mohd wrote:
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Iam using servicemix3.1 my components configuration is as follows.
>>>>>>
>>>>>> wire tap --> POJO class ---> JMS Topic
>>>>>>
>>>>>> I have configured POJO class as follows in servicemix.xml
>>>>>>
>>>>>> <sm:activationSpecs>
>>>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>>>> service="foo:BESMessageInterceptor"
>>>>>> destinationService="bescocr:JMSConsumer">
>>>>>> <sm:component><bean
>>>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>>>> </sm:activationSpec>
>>>>>> </sm:activationSpecs>
>>>>>>
>>>>>>
>>>>>> And my pojo class method is
>>>>>>
>>>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>>>> MessagingException {
>>>>>> log.info("Received message " + exchange);
>>>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>>> System.out.println("_______________hai__________");
>>>>>> getMessageList().addMessage(message);
>>>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>>>> context.getDeliveryChannel().send(exchange);
>>>>>> }
>>>>>>
>>>>>>
>>>>>> when i start my servicemix pojo class gets deployed the following
>>>>>> output
>>>>>> depicts that
>>>>>>
>>>>>>
>>>>>> INFO - JBIContainer - Activating component for:
>>>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>>>> : BESMessageInterceptor component:
>>>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>>>>> com.e2e.bes.process
>>>>>> or.MessageInterceptor@18e252
>>>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>>>> BESMessageInterceptor
>>>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>>>> Component: servicemix-bpe to Started
>>>>>>
>>>>>> But when i send a message to wire tap iam getting the following
>>>>>> exception
>>>>>>
>>>>>>
>>>>>>
>>>>>> WARN - DefaultBroker - ServiceName
>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>> registered
>>>>>> WARN - DefaultBroker - ServiceName
>>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>>> registered
>>>>>> ERROR - EIPComponent - Error processing exchange
>>>>>> InOnly[
>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>>>> status: Active
>>>>>> role: provider
>>>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>>>> endpoint: endpoint
>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <Actual message which i got in tap>]
>>>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>>>> exchange: InOnly[
>>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>>>> status: Active
>>>>>> role: provider
>>>>>> service: BESMessageInterceptor
>>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>>
>>>>>> <Actual message which i got in tap>] for service:
>>>>>> BESMessageInterceptor
>>>>>> and interface: null
>>>>>> at
>>>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>>>> at
>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>>>> at
>>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>>>> at
>>>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>>>> at
>>>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>>>> at
>>>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>>>> at
>>>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>>>> at
>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>>>> at
>>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>>>> at
>>>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>>>> at
>>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>>> at
>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>>> at
>>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
Gert,
I have removed destinationservice for the pojo from servicemix.xml and
iam using eip:pipleine as suggested by you but iam getting the following
exception now.
Now my configuration is wireTap--->Pipeline-->JMS Topic (Pipline will
call POJO)
Exception is
]
javax.jbi.messaging.MessagingException: illegal exchange status: done
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:583)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
at
org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
if i remove the line "exchange.setStatus(ExchangeStatus.DONE);" then iam
getting the following exception
error: java.lang.IllegalStateException: Exchange status is Active but has
no Out nor Fault message
]
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
com.intel.e2e.bes.processor.MessageInterceptor.onMessageExchange(MessageInterceptor.java:70)
at
org.apache.servicemix.components.util.ComponentAdaptorMEListener.onMessageExchange(ComponentAdaptorMEListener.java:47)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
When to use ExchangeStatus.DONE ?
shall i have to change the code in the line
NormalizedMessage message = exchange.getMessage("in");
Iam using the reciever component as it is provided in servicemix site just
by changing the servicename as suggested by you.
Gert Vanthienen wrote:
>
> Arif,
>
> If you have a DOMSource as the content, you can use getNode() to
> navigate the content or use e.g. XPath to get the data out of there.
>
> I don't know how you can send a message to the destinationService you
> configured in your XML file. I usually take an eip:pipeline, which
> receives the InOnly message, does the InOut call to the POJO and sends
> the result to the next hop.
>
> Gert
>
> Arif Mohd wrote:
>> Yes iam able to delploy the POJO componet.
>>
>> I have given the servicename correctly in init method and iam able to
>> invoke the pojo but the message is not going to destination after this
>> i.e,
>> to the topic , configuration for JMSConsumer is as follows
>>
>> <jms:endpoint service="bescocr:JMSConsumer"
>> endpoint="jms"
>> role="consumer"
>> destinationStyle="topic"
>> jmsProviderDestinationName="PHB800"
>> connectionFactory="#jmsFactory"
>> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
>> />
>>
>> <bean id="jmsFactory"
>> class="org.apache.activemq.pool.PooledConnectionFactory">
>> <property name="connectionFactory">
>> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
>> <property name="brokerURL"
>> value="tcp://localhost:61616"/>
>> </bean>
>> </property>
>> </bean>
>>
>> One more question How to get the value of a specific tag from the message
>> which i got in onMessageExchange method?
>>
>> When i print the value of message.getContent() iam getting output as
>> folllows
>>
>> javax.xml.transform.dom.DOMSource@b5edd1
>> - MessageInterceptor - Received message InOnly[
>> : ID:EC4T16INT165110-4176-1181029075183-5:64
>> atus: Active
>> le: provider
>> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
>> dpoint: endpoint
>> : <?xml version="1.0" encoding="UTF-8"?><Address
>> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
>> p://model.besgv.e2e.xxx.com"
>> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns:urn="urn:soap:bes-binding">
>> <Body>
>> <FirstName>yyy</FirstName>
>> <eid>123</eid>
>> </Body>
>> </Address>
>>
>> i need to get the value of eid and set the one message property to that
>> value
>>
>>
>> Arif Mohd wrote:
>>
>>> i have added this configuration to conf/servicemix.xml
>>>
>>> Gert Vanthienen wrote:
>>>
>>>> Arif,
>>>>
>>>> Have you added this configuration to conf/servicemix.xml or have you
>>>> built a servicemix-lwcontainer SU to hold you service?
>>>>
>>>> Have you activated the endpoint? Something like:
>>>> public void init(ComponentContext context) throws JBIException {
>>>> this.context = context;
>>>> context.activateEndpoint(new QName("http://your.namespace",
>>>> "service"),
>>>> "endpoint");
>>>> }
>>>>
>>>> Gert
>>>>
>>>>
>>>> Arif Mohd wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Iam using servicemix3.1 my components configuration is as follows.
>>>>>
>>>>> wire tap --> POJO class ---> JMS Topic
>>>>>
>>>>> I have configured POJO class as follows in servicemix.xml
>>>>>
>>>>> <sm:activationSpecs>
>>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>>> service="foo:BESMessageInterceptor"
>>>>> destinationService="bescocr:JMSConsumer">
>>>>> <sm:component><bean
>>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>>> </sm:activationSpec>
>>>>> </sm:activationSpecs>
>>>>>
>>>>>
>>>>> And my pojo class method is
>>>>>
>>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>>> MessagingException {
>>>>> log.info("Received message " + exchange);
>>>>> NormalizedMessage message = exchange.getMessage("in");
>>>>> System.out.println("_______________hai__________");
>>>>> getMessageList().addMessage(message);
>>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>>> context.getDeliveryChannel().send(exchange);
>>>>> }
>>>>>
>>>>>
>>>>> when i start my servicemix pojo class gets deployed the following
>>>>> output
>>>>> depicts that
>>>>>
>>>>>
>>>>> INFO - JBIContainer - Activating component for:
>>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>>> : BESMessageInterceptor component:
>>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>>>> com.e2e.bes.process
>>>>> or.MessageInterceptor@18e252
>>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>>> BESMessageInterceptor
>>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>>> Component: servicemix-bpe to Started
>>>>>
>>>>> But when i send a message to wire tap iam getting the following
>>>>> exception
>>>>>
>>>>>
>>>>>
>>>>> WARN - DefaultBroker - ServiceName
>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>> registered
>>>>> WARN - DefaultBroker - ServiceName
>>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>>> registered
>>>>> ERROR - EIPComponent - Error processing exchange
>>>>> InOnly[
>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>>> status: Active
>>>>> role: provider
>>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>>> endpoint: endpoint
>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>> <Actual message which i got in tap>]
>>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>>> exchange: InOnly[
>>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>>> status: Active
>>>>> role: provider
>>>>> service: BESMessageInterceptor
>>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>>
>>>>> <Actual message which i got in tap>] for service:
>>>>> BESMessageInterceptor
>>>>> and interface: null
>>>>> at
>>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>>> at
>>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>>> at
>>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>>> at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>>> at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>>> at
>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>>> at
>>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>>> at
>>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>>> at
>>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>>> at
>>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>>> at
>>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>>> at
>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>>> at
>>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>>> at
>>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>> at
>>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>>> at
>>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>>> at
>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>>> at
>>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>> at
>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>>> at
>>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>>> at java.lang.Thread.run(Thread.java:595)
>>>>>
>>>>>
>>>>
>>>
>>
>>
>
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10969401
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Gert Vanthienen <ge...@skynet.be>.
Arif,
If you have a DOMSource as the content, you can use getNode() to
navigate the content or use e.g. XPath to get the data out of there.
I don't know how you can send a message to the destinationService you
configured in your XML file. I usually take an eip:pipeline, which
receives the InOnly message, does the InOut call to the POJO and sends
the result to the next hop.
Gert
Arif Mohd wrote:
> Yes iam able to delploy the POJO componet.
>
> I have given the servicename correctly in init method and iam able to
> invoke the pojo but the message is not going to destination after this i.e,
> to the topic , configuration for JMSConsumer is as follows
>
> <jms:endpoint service="bescocr:JMSConsumer"
> endpoint="jms"
> role="consumer"
> destinationStyle="topic"
> jmsProviderDestinationName="PHB800"
> connectionFactory="#jmsFactory"
> defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
> />
>
> <bean id="jmsFactory"
> class="org.apache.activemq.pool.PooledConnectionFactory">
> <property name="connectionFactory">
> <bean class="org.apache.activemq.ActiveMQConnectionFactory">
> <property name="brokerURL" value="tcp://localhost:61616"/>
> </bean>
> </property>
> </bean>
>
> One more question How to get the value of a specific tag from the message
> which i got in onMessageExchange method?
>
> When i print the value of message.getContent() iam getting output as
> folllows
>
> javax.xml.transform.dom.DOMSource@b5edd1
> - MessageInterceptor - Received message InOnly[
> : ID:EC4T16INT165110-4176-1181029075183-5:64
> atus: Active
> le: provider
> rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
> dpoint: endpoint
> : <?xml version="1.0" encoding="UTF-8"?><Address
> xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
> p://model.besgv.e2e.xxx.com"
> xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:urn="urn:soap:bes-binding">
> <Body>
> <FirstName>yyy</FirstName>
> <eid>123</eid>
> </Body>
> </Address>
>
> i need to get the value of eid and set the one message property to that
> value
>
>
> Arif Mohd wrote:
>
>> i have added this configuration to conf/servicemix.xml
>>
>> Gert Vanthienen wrote:
>>
>>> Arif,
>>>
>>> Have you added this configuration to conf/servicemix.xml or have you
>>> built a servicemix-lwcontainer SU to hold you service?
>>>
>>> Have you activated the endpoint? Something like:
>>> public void init(ComponentContext context) throws JBIException {
>>> this.context = context;
>>> context.activateEndpoint(new QName("http://your.namespace", "service"),
>>> "endpoint");
>>> }
>>>
>>> Gert
>>>
>>>
>>> Arif Mohd wrote:
>>>
>>>> Hi,
>>>>
>>>> Iam using servicemix3.1 my components configuration is as follows.
>>>>
>>>> wire tap --> POJO class ---> JMS Topic
>>>>
>>>> I have configured POJO class as follows in servicemix.xml
>>>>
>>>> <sm:activationSpecs>
>>>> <sm:activationSpec id="BESMessageInterceptor"
>>>> service="foo:BESMessageInterceptor"
>>>> destinationService="bescocr:JMSConsumer">
>>>> <sm:component><bean
>>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>>> </sm:activationSpec>
>>>> </sm:activationSpecs>
>>>>
>>>>
>>>> And my pojo class method is
>>>>
>>>> public void onMessageExchange(MessageExchange exchange) throws
>>>> MessagingException {
>>>> log.info("Received message " + exchange);
>>>> NormalizedMessage message = exchange.getMessage("in");
>>>> System.out.println("_______________hai__________");
>>>> getMessageList().addMessage(message);
>>>> exchange.setStatus(ExchangeStatus.DONE);
>>>> context.getDeliveryChannel().send(exchange);
>>>> }
>>>>
>>>>
>>>> when i start my servicemix pojo class gets deployed the following output
>>>> depicts that
>>>>
>>>>
>>>> INFO - JBIContainer - Activating component for:
>>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>>> : BESMessageInterceptor component:
>>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>>> com.e2e.bes.process
>>>> or.MessageInterceptor@18e252
>>>> INFO - ComponentMBeanImpl - Initializing component:
>>>> BESMessageInterceptor
>>>> INFO - ComponentMBeanImpl - Setting running state for
>>>> Component: servicemix-bpe to Started
>>>>
>>>> But when i send a message to wire tap iam getting the following
>>>> exception
>>>>
>>>>
>>>>
>>>> WARN - DefaultBroker - ServiceName
>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>> registered
>>>> WARN - DefaultBroker - ServiceName
>>>> (BESMessageInterceptor) specified for routing, but can't find it
>>>> registered
>>>> ERROR - EIPComponent - Error processing exchange
>>>> InOnly[
>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>>> status: Active
>>>> role: provider
>>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>>> endpoint: endpoint
>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>> <Actual message which i got in tap>]
>>>> javax.jbi.messaging.MessagingException: Could not find route for
>>>> exchange: InOnly[
>>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>>> status: Active
>>>> role: provider
>>>> service: BESMessageInterceptor
>>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>>
>>>> <Actual message which i got in tap>] for service: BESMessageInterceptor
>>>> and interface: null
>>>> at
>>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>>> at
>>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>>> at
>>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>>> at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>>> at
>>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>>> at
>>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>>> at
>>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>>> at
>>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>>> at
>>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>>> at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>>> at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>>> at
>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>> at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>>> at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>>> at
>>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>>> at java.lang.Thread.run(Thread.java:595)
>>>>
>>>>
>>>
>>
>
>
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
Yes iam able to delploy the POJO componet.
I have given the servicename correctly in init method and iam able to
invoke the pojo but the message is not going to destination after this i.e,
to the topic , configuration for JMSConsumer is as follows
<jms:endpoint service="bescocr:JMSConsumer"
endpoint="jms"
role="consumer"
destinationStyle="topic"
jmsProviderDestinationName="PHB800"
connectionFactory="#jmsFactory"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
/>
<bean id="jmsFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
</property>
</bean>
One more question How to get the value of a specific tag from the message
which i got in onMessageExchange method?
When i print the value of message.getContent() iam getting output as
folllows
javax.xml.transform.dom.DOMSource@b5edd1
- MessageInterceptor - Received message InOnly[
: ID:EC4T16INT165110-4176-1181029075183-5:64
atus: Active
le: provider
rvice: {http://xxx.com/bescocr_031807}BESMessageInterceptor
dpoint: endpoint
: <?xml version="1.0" encoding="UTF-8"?><Address
xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:http=
p://model.besgv.e2e.xxx.com"
xmlns:ns1="http://www.w3.org/2001/XMLSchema-instance"
xmlns:urn="urn:soap:bes-binding">
<Body>
<FirstName>yyy</FirstName>
<eid>123</eid>
</Body>
</Address>
i need to get the value of eid and set the one message property to that
value
Arif Mohd wrote:
>
> i have added this configuration to conf/servicemix.xml
>
> Gert Vanthienen wrote:
>>
>> Arif,
>>
>> Have you added this configuration to conf/servicemix.xml or have you
>> built a servicemix-lwcontainer SU to hold you service?
>>
>> Have you activated the endpoint? Something like:
>> public void init(ComponentContext context) throws JBIException {
>> this.context = context;
>> context.activateEndpoint(new QName("http://your.namespace", "service"),
>> "endpoint");
>> }
>>
>> Gert
>>
>>
>> Arif Mohd wrote:
>>>
>>> Hi,
>>>
>>> Iam using servicemix3.1 my components configuration is as follows.
>>>
>>> wire tap --> POJO class ---> JMS Topic
>>>
>>> I have configured POJO class as follows in servicemix.xml
>>>
>>> <sm:activationSpecs>
>>> <sm:activationSpec id="BESMessageInterceptor"
>>> service="foo:BESMessageInterceptor"
>>> destinationService="bescocr:JMSConsumer">
>>> <sm:component><bean
>>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>>> </sm:activationSpec>
>>> </sm:activationSpecs>
>>>
>>>
>>> And my pojo class method is
>>>
>>> public void onMessageExchange(MessageExchange exchange) throws
>>> MessagingException {
>>> log.info("Received message " + exchange);
>>> NormalizedMessage message = exchange.getMessage("in");
>>> System.out.println("_______________hai__________");
>>> getMessageList().addMessage(message);
>>> exchange.setStatus(ExchangeStatus.DONE);
>>> context.getDeliveryChannel().send(exchange);
>>> }
>>>
>>>
>>> when i start my servicemix pojo class gets deployed the following output
>>> depicts that
>>>
>>>
>>> INFO - JBIContainer - Activating component for:
>>> [container=ServiceMix,name=BESMessageInterceptor] with service
>>> : BESMessageInterceptor component:
>>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>>> com.e2e.bes.process
>>> or.MessageInterceptor@18e252
>>> INFO - ComponentMBeanImpl - Initializing component:
>>> BESMessageInterceptor
>>> INFO - ComponentMBeanImpl - Setting running state for
>>> Component: servicemix-bpe to Started
>>>
>>> But when i send a message to wire tap iam getting the following
>>> exception
>>>
>>>
>>>
>>> WARN - DefaultBroker - ServiceName
>>> (BESMessageInterceptor) specified for routing, but can't find it
>>> registered
>>> WARN - DefaultBroker - ServiceName
>>> (BESMessageInterceptor) specified for routing, but can't find it
>>> registered
>>> ERROR - EIPComponent - Error processing exchange
>>> InOnly[
>>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>>> status: Active
>>> role: provider
>>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>>> endpoint: endpoint
>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>> <Actual message which i got in tap>]
>>> javax.jbi.messaging.MessagingException: Could not find route for
>>> exchange: InOnly[
>>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>>> status: Active
>>> role: provider
>>> service: BESMessageInterceptor
>>> in: <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <Actual message which i got in tap>] for service: BESMessageInterceptor
>>> and interface: null
>>> at
>>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>>> at
>>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>>> at
>>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>>> at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>>> at
>>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>>> at
>>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>>> at
>>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>>> at
>>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>>> at
>>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>>> at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>>> at
>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>>> at
>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>> at
>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>>> at
>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>>> at
>>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>>> at java.lang.Thread.run(Thread.java:595)
>>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10964980
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
i have added this configuration to conf/servicemix.xml
Gert Vanthienen wrote:
>
> Arif,
>
> Have you added this configuration to conf/servicemix.xml or have you built
> a servicemix-lwcontainer SU to hold you service?
>
> Have you activated the endpoint? Something like:
> public void init(ComponentContext context) throws JBIException {
> this.context = context;
> context.activateEndpoint(new QName("http://your.namespace", "service"),
> "endpoint");
> }
>
> Gert
>
>
> Arif Mohd wrote:
>>
>> Hi,
>>
>> Iam using servicemix3.1 my components configuration is as follows.
>>
>> wire tap --> POJO class ---> JMS Topic
>>
>> I have configured POJO class as follows in servicemix.xml
>>
>> <sm:activationSpecs>
>> <sm:activationSpec id="BESMessageInterceptor"
>> service="foo:BESMessageInterceptor"
>> destinationService="bescocr:JMSConsumer">
>> <sm:component><bean
>> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
>> </sm:activationSpec>
>> </sm:activationSpecs>
>>
>>
>> And my pojo class method is
>>
>> public void onMessageExchange(MessageExchange exchange) throws
>> MessagingException {
>> log.info("Received message " + exchange);
>> NormalizedMessage message = exchange.getMessage("in");
>> System.out.println("_______________hai__________");
>> getMessageList().addMessage(message);
>> exchange.setStatus(ExchangeStatus.DONE);
>> context.getDeliveryChannel().send(exchange);
>> }
>>
>>
>> when i start my servicemix pojo class gets deployed the following output
>> depicts that
>>
>>
>> INFO - JBIContainer - Activating component for:
>> [container=ServiceMix,name=BESMessageInterceptor] with service
>> : BESMessageInterceptor component:
>> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
>> com.e2e.bes.process
>> or.MessageInterceptor@18e252
>> INFO - ComponentMBeanImpl - Initializing component:
>> BESMessageInterceptor
>> INFO - ComponentMBeanImpl - Setting running state for
>> Component: servicemix-bpe to Started
>>
>> But when i send a message to wire tap iam getting the following exception
>>
>>
>>
>> WARN - DefaultBroker - ServiceName
>> (BESMessageInterceptor) specified for routing, but can't find it
>> registered
>> WARN - DefaultBroker - ServiceName
>> (BESMessageInterceptor) specified for routing, but can't find it
>> registered
>> ERROR - EIPComponent - Error processing exchange
>> InOnly[
>> id: ID:EC4T16INT165110-2355-1180969168607-5:38
>> status: Active
>> role: provider
>> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
>> endpoint: endpoint
>> in: <?xml version="1.0" encoding="UTF-8"?>
>> <Actual message which i got in tap>]
>> javax.jbi.messaging.MessagingException: Could not find route for
>> exchange: InOnly[
>> id: ID:EC4T16INT165110-2355-1180969168607-5:40
>> status: Active
>> role: provider
>> service: BESMessageInterceptor
>> in: <?xml version="1.0" encoding="UTF-8"?>
>>
>> <Actual message which i got in tap>] for service: BESMessageInterceptor
>> and interface: null
>> at
>> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
>> at
>> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
>> at
>> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
>> at
>> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
>> at
>> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
>> at
>> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
>> at
>> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
>> at
>> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
>> at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
>> at
>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>> at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
>> at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
>> at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
>> at
>> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
>> at java.lang.Thread.run(Thread.java:595)
>>
>
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10963721
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Gert Vanthienen <ge...@skynet.be>.
Arif,
Have you added this configuration to conf/servicemix.xml or have you built a
servicemix-lwcontainer SU to hold you service?
Have you activated the endpoint? Something like:
public void init(ComponentContext context) throws JBIException {
this.context = context;
context.activateEndpoint(new QName("http://your.namespace", "service"),
"endpoint");
}
Gert
Arif Mohd wrote:
>
> Hi,
>
> Iam using servicemix3.1 my components configuration is as follows.
>
> wire tap --> POJO class ---> JMS Topic
>
> I have configured POJO class as follows in servicemix.xml
>
> <sm:activationSpecs>
> <sm:activationSpec id="BESMessageInterceptor"
> service="foo:BESMessageInterceptor"
> destinationService="bescocr:JMSConsumer">
> <sm:component><bean
> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
> </sm:activationSpec>
> </sm:activationSpecs>
>
>
> And my pojo class method is
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
> log.info("Received message " + exchange);
> NormalizedMessage message = exchange.getMessage("in");
> System.out.println("_______________hai__________");
> getMessageList().addMessage(message);
> exchange.setStatus(ExchangeStatus.DONE);
> context.getDeliveryChannel().send(exchange);
> }
>
>
> when i start my servicemix pojo class gets deployed the following output
> depicts that
>
>
> INFO - JBIContainer - Activating component for:
> [container=ServiceMix,name=BESMessageInterceptor] with service
> : BESMessageInterceptor component:
> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
> com.e2e.bes.process
> or.MessageInterceptor@18e252
> INFO - ComponentMBeanImpl - Initializing component:
> BESMessageInterceptor
> INFO - ComponentMBeanImpl - Setting running state for
> Component: servicemix-bpe to Started
>
> But when i send a message to wire tap iam getting the following exception
>
>
>
> WARN - DefaultBroker - ServiceName
> (BESMessageInterceptor) specified for routing, but can't find it
> registered
> WARN - DefaultBroker - ServiceName
> (BESMessageInterceptor) specified for routing, but can't find it
> registered
> ERROR - EIPComponent - Error processing exchange InOnly[
> id: ID:EC4T16INT165110-2355-1180969168607-5:38
> status: Active
> role: provider
> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
> endpoint: endpoint
> in: <?xml version="1.0" encoding="UTF-8"?>
> <Actual message which i got in tap>]
> javax.jbi.messaging.MessagingException: Could not find route for exchange:
> InOnly[
> id: ID:EC4T16INT165110-2355-1180969168607-5:40
> status: Active
> role: provider
> service: BESMessageInterceptor
> in: <?xml version="1.0" encoding="UTF-8"?>
>
> <Actual message which i got in tap>] for service: BESMessageInterceptor
> and interface: null
> at
> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
> at
> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
> at
> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
> at
> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
> at
> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
> at
> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
> at
> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
> at
> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
> at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10963392
Sent from the ServiceMix - User mailing list archive at Nabble.com.
Re: Not able to call POJO class
Posted by Arif Mohd <ar...@wipro.com>.
My configuration is very simple just iam trying to inject one pojo class
Configuaration for tap is
<eip:wire-tap service="bescocr:PipetoJmsTapSvc" endpoint="endpoint">
<eip:target>
<eip:exchange-target service="foo:BESMessageInterceptor" />
</eip:target>
<eip:inListener>
<eip:exchange-target service="bescocr:JmsTapQ4" />
</eip:inListener>
</eip:wire-tap>
JMS Topic configuration is
<jms:endpoint service="bescocr:JMSConsumer"
endpoint="jms"
role="provider"
destinationStyle="queue"
jmsProviderDestinationName="PHB800"
connectionFactory="#jmsFactory"
defaultMep="http://www.w3.org/2004/08/wsdl/in-only"
/>
<bean id="jmsFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
</property>
</bean>
Arif Mohd wrote:
>
> Hi,
>
> Iam using servicemix3.1 my components configuration is as follows.
>
> wire tap --> POJO class ---> JMS Topic
>
> I have configured POJO class as follows in servicemix.xml
>
> <sm:activationSpecs>
> <sm:activationSpec id="BESMessageInterceptor"
> service="foo:BESMessageInterceptor"
> destinationService="bescocr:JMSConsumer">
> <sm:component><bean
> class="com.e2e.bes.processor.MessageInterceptor"/></sm:component>
> </sm:activationSpec>
> </sm:activationSpecs>
>
>
> And my pojo class method is
>
> public void onMessageExchange(MessageExchange exchange) throws
> MessagingException {
> log.info("Received message " + exchange);
> NormalizedMessage message = exchange.getMessage("in");
> System.out.println("_______________hai__________");
> getMessageList().addMessage(message);
> exchange.setStatus(ExchangeStatus.DONE);
> context.getDeliveryChannel().send(exchange);
> }
>
>
> when i start my servicemix pojo class gets deployed the following output
> depicts that
>
>
> INFO - JBIContainer - Activating component for:
> [container=ServiceMix,name=BESMessageInterceptor] with service
> : BESMessageInterceptor component:
> org.apache.servicemix.components.util.ComponentAdaptorMEListener for
> com.e2e.bes.process
> or.MessageInterceptor@18e252
> INFO - ComponentMBeanImpl - Initializing component:
> BESMessageInterceptor
> INFO - ComponentMBeanImpl - Setting running state for
> Component: servicemix-bpe to Started
>
> But when i send a message to wire tap iam getting the following exception
>
>
>
> WARN - DefaultBroker - ServiceName
> (BESMessageInterceptor) specified for routing, but can't find it
> registered
> WARN - DefaultBroker - ServiceName
> (BESMessageInterceptor) specified for routing, but can't find it
> registered
> ERROR - EIPComponent - Error processing exchange InOnly[
> id: ID:EC4T16INT165110-2355-1180969168607-5:38
> status: Active
> role: provider
> service: {http://xxx.com/bescocr_031807}PipetoJmsTapSvc
> endpoint: endpoint
> in: <?xml version="1.0" encoding="UTF-8"?>
> <Actual message which i got in tap>]
> javax.jbi.messaging.MessagingException: Could not find route for exchange:
> InOnly[
> id: ID:EC4T16INT165110-2355-1180969168607-5:40
> status: Active
> role: provider
> service: BESMessageInterceptor
> in: <?xml version="1.0" encoding="UTF-8"?>
>
> <Actual message which i got in tap>] for service: BESMessageInterceptor
> and interface: null
> at
> org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
> at
> org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
> at
> org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.sendConsumerExchange(AsyncBaseLifeCycle.java:546)
> at
> org.apache.servicemix.common.EndpointDeliveryChannel.send(EndpointDeliveryChannel.java:77)
> at
> org.apache.servicemix.common.endpoints.SimpleEndpoint.send(SimpleEndpoint.java:67)
> at
> org.apache.servicemix.eip.patterns.WireTap.sendToListenerAndTarget(WireTap.java:258)
> at
> org.apache.servicemix.eip.patterns.WireTap.processAsync(WireTap.java:204)
> at
> org.apache.servicemix.eip.EIPEndpoint.process(EIPEndpoint.java:160)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
> at
> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
> at
> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
> at
> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
> at
> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
> at
> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
> at
> edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
> at java.lang.Thread.run(Thread.java:595)
>
--
View this message in context: http://www.nabble.com/Not-able-to-call-POJO-class-tf3865883s12049.html#a10963364
Sent from the ServiceMix - User mailing list archive at Nabble.com.