You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by xiaotao183 <xi...@gmail.com> on 2010/09/19 14:22:43 UTC
Got NPE when invoking POJO producer
Hi,
I was trying to use the @producer annotation in serivcemix to send a message
to an endpoint.
Here is the code
@WebService(endpointInterface =
"org.apache.servicemix.examples.cxf.HelloWorld")
public class HelloWorldImpl implements HelloWorld
{
@EndpointInject(uri="direct:start")
protected ProducerTemplate template;
public String sayHi(String text)
{
produce();
return "Hello " + text;
}
public void produce()
{
template.sendBody("hello world");
}
}
and this is the beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Licensed to the Apache Software Foundation (ASF) under one or more
contributor
license agreements. See the NOTICE file distributed with this work
for additional
information regarding copyright ownership. The ASF licenses this
file to
you under the Apache License, Version 2.0 (the "License"); you may
not use
this file except in compliance with the License. You may obtain a
copy of
the License at http://www.apache.org/licenses/LICENSE-2.0 Unless
required
by applicable law or agreed to in writing, software distributed
under the
License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS
OF ANY KIND, either express or implied. See the License for the
specific
language governing permissions and limitations under the License.
-->
<!-- START SNIPPET: beans -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:osgi="http://camel.apache.org/schema/osgi"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/osgi
http://camel.apache.org/schema/osgi/camel-osgi.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
<import
resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" />
<jaxws:endpoint id="helloWorld"
implementor="org.apache.servicemix.examples.cxf.HelloWorldImpl"
address="/HelloWorld" />
<bean class="org.apache.servicemix.examples.cxf.HelloWorldImpl" />
<osgi:camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start" />
<to uri="log:ExampleRouter" />
</route>
</osgi:camelContext>
</beans>
<!-- END SNIPPET: beans -->
I got NPE when invoking the producertemplate to send message at the this
line 'template.sendBody("hello world");'
Looks like the producertemplate was not injected to the bean correctly.
Thanks
--
View this message in context: http://camel.465427.n5.nabble.com/Got-NPE-when-invoking-POJO-producer-tp2845554p2845554.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Got NPE when invoking POJO producer
Posted by Willem Jiang <wi...@gmail.com>.
That's because your template isn't injected with a producerTemplate, as
the impl instance is created by CXF not by Spring.
Can you change the spring configure like this ?
<jaxws:endpoint id="helloWorld"
implementor="#myImpl"
address="/HelloWorld" />
<bean id="myImpl"
class="org.apache.servicemix.examples.cxf.HelloWorldImpl" />
...
Willem
On 9/20/10 8:19 AM, xiaotao183 wrote:
>
> Hi Claus,
>
> Webservice is not part of the route. What I want to achieve is when the
> webservice is invoked a message should be produced and sent to an endpoint
> (in this case direct:start is the endpoint).
>
> I tested my code using a web client and the NPE was thrown in the line of
> calling the template.sendBody("hello world").
>
>
Re: Got NPE when invoking POJO producer
Posted by xiaotao183 <xi...@gmail.com>.
Hi Claus,
Webservice is not part of the route. What I want to achieve is when the
webservice is invoked a message should be produced and sent to an endpoint
(in this case direct:start is the endpoint).
I tested my code using a web client and the NPE was thrown in the line of
calling the template.sendBody("hello world").
--
View this message in context: http://camel.465427.n5.nabble.com/Got-NPE-when-invoking-POJO-producer-tp2845554p2846079.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: Got NPE when invoking POJO producer
Posted by Claus Ibsen <cl...@gmail.com>.
The route you post does not use the web service in any way? That only
routes to a log endpoint.
And is your issue anyhow related to CAMEL-3136?
https://issues.apache.org/activemq/browse/CAMEL-3136
On Sun, Sep 19, 2010 at 2:22 PM, xiaotao183 <xi...@gmail.com> wrote:
>
> Hi,
>
> I was trying to use the @producer annotation in serivcemix to send a message
> to an endpoint.
>
> Here is the code
>
> @WebService(endpointInterface =
> "org.apache.servicemix.examples.cxf.HelloWorld")
> public class HelloWorldImpl implements HelloWorld
> {
> @EndpointInject(uri="direct:start")
> protected ProducerTemplate template;
>
> public String sayHi(String text)
> {
> produce();
> return "Hello " + text;
> }
>
> public void produce()
> {
> template.sendBody("hello world");
> }
> }
>
> and this is the beans.xml
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- Licensed to the Apache Software Foundation (ASF) under one or more
> contributor
> license agreements. See the NOTICE file distributed with this work
> for additional
> information regarding copyright ownership. The ASF licenses this
> file to
> you under the Apache License, Version 2.0 (the "License"); you may
> not use
> this file except in compliance with the License. You may obtain a
> copy of
> the License at http://www.apache.org/licenses/LICENSE-2.0 Unless
> required
> by applicable law or agreed to in writing, software distributed
> under the
> License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
> CONDITIONS
> OF ANY KIND, either express or implied. See the License for the
> specific
> language governing permissions and limitations under the License.
> -->
> <!-- START SNIPPET: beans -->
> <beans xmlns="http://www.springframework.org/schema/beans"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:jaxws="http://cxf.apache.org/jaxws"
> xmlns:osgi="http://camel.apache.org/schema/osgi"
> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> http://camel.apache.org/schema/osgi
> http://camel.apache.org/schema/osgi/camel-osgi.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
>
> <import resource="classpath:META-INF/cxf/cxf.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml" />
> <import
> resource="classpath:META-INF/cxf/osgi/cxf-extension-osgi.xml" />
>
> <jaxws:endpoint id="helloWorld"
>
> implementor="org.apache.servicemix.examples.cxf.HelloWorldImpl"
> address="/HelloWorld" />
>
> <bean class="org.apache.servicemix.examples.cxf.HelloWorldImpl" />
>
> <osgi:camelContext xmlns="http://camel.apache.org/schema/spring">
> <route>
> <from uri="direct:start" />
>
> <to uri="log:ExampleRouter" />
> </route>
> </osgi:camelContext>
>
> </beans>
> <!-- END SNIPPET: beans -->
>
>
>
> I got NPE when invoking the producertemplate to send message at the this
> line 'template.sendBody("hello world");'
>
> Looks like the producertemplate was not injected to the bean correctly.
>
> Thanks
> --
> View this message in context: http://camel.465427.n5.nabble.com/Got-NPE-when-invoking-POJO-producer-tp2845554p2845554.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
--
Claus Ibsen
Apache Camel Committer
Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus