You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by moraleslos <mo...@hotmail.com> on 2007/01/02 22:11:21 UTC

issues with jsr181 annotations and Spring transactions

When deploying my jsr181 component, I get the following exception:

org.codehaus.xfire.annotations.AnnotationException: Class $Proxy34 does not
have a WebService annotation

This occurs when my jsr181-annotated service class is participating in a
Spring-managed transaction, e.g. @Transactional.  When I take the
@Transactional annotation out, it deploys successfully (although it won't
work since it needs to be inside a transaction).  How do I go about to
deploy this web service succesfully?  Below is my appropriate config and
classes:


***************************************
xbean.xml:

<beans 
	xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"
        xmlns:foo="http://com.test.servicemix.ws">

<import
resource="classpath:com/test/servicemix/service/music-service-context.xml"/>
...


    <jsr181:endpoint 
    	service="foo:MusicService"
    	pojo="#muzikService"
 		annotations="jsr181"/>  
</beans>


music-service-context.xml:

<beans...>
        <!-- hibernateTxManager defined in another imported spring context
resource -->
	<tx:annotation-driven transaction-manager="hibernateTxManager"/>       

	<!-- services -->
    <bean id="muzikService"
class="com.test.servicemix.service.MusicService">
    	<property name="musicDao" ref="HibernateMusicDao"/>
    </bean>	  

</beans>


MusicService.java:

@Transactional
@WebService(endpointInterface = "com.test.servicemix.service.IMusicService")
public class MusicService implements IMusicService {
...
}
##############################################

Thanks in advance!

-los
-- 
View this message in context: http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8130814
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: issues with jsr181 annotations and Spring transactions

Posted by moraleslos <mo...@hotmail.com>.
Nevermind.  Got it working by switching from document to wrapped.

-los


moraleslos wrote:
> 
> Thanks Guillaume,
> 
> Looks like it deployed succesfully now (must be the serviceInterface
> attribute that helped).  However, when invoking this service I get the
> following exception:
> 
> org.codehaus.xfire.fault.XFireFault: Not enough message parts were
> received for the operation.
> 	at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler.fillInHolders(ServiceInvocationHandler.java:226)
> 	at
> org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:71)
> 	at
> org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
> 	at
> org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
> 	at
> org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
> 	at
> org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(Jsr181ExchangeProcessor.java:110)
> 	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:619)
> 
> Any ideas of the cause?  Thanks in advance.
> 
> -los
> 
> 
> 
> gnodet wrote:
>> 
>> Try something like that:
>> 
>>   <jsr181:endpoint service="foo:MusicService"
>>                    endpoint="MusicServicePort"
>>                    pojo="#muzikService"
>>                   
>> serviceInterface="com.test.servicemix.service.IMusicService"
>>                    typeMapping="jaxb2"
>>                    annotations="jsr181"
>>                    style="document" />
>> 
>> 
>> On 1/2/07, moraleslos <mo...@hotmail.com> wrote:
>>>
>>> When deploying my jsr181 component, I get the following exception:
>>>
>>> org.codehaus.xfire.annotations.AnnotationException: Class $Proxy34 does
>>> not
>>> have a WebService annotation
>>>
>>> This occurs when my jsr181-annotated service class is participating in a
>>> Spring-managed transaction, e.g. @Transactional.  When I take the
>>> @Transactional annotation out, it deploys successfully (although it
>>> won't
>>> work since it needs to be inside a transaction).  How do I go about to
>>> deploy this web service succesfully?  Below is my appropriate config and
>>> classes:
>>>
>>>
>>> ***************************************
>>> xbean.xml:
>>>
>>> <beans
>>>         xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"
>>>         xmlns:foo="http://com.test.servicemix.ws">
>>>
>>> <import
>>> resource="classpath:com/test/servicemix/service/music-service-context.xml"/>
>>> ...
>>>
>>>
>>>     <jsr181:endpoint
>>>         service="foo:MusicService"
>>>         pojo="#muzikService"
>>>                 annotations="jsr181"/>
>>> </beans>
>>>
>>>
>>> music-service-context.xml:
>>>
>>> <beans...>
>>>         <!-- hibernateTxManager defined in another imported spring
>>> context
>>> resource -->
>>>         <tx:annotation-driven transaction-manager="hibernateTxManager"/>
>>>
>>>         <!-- services -->
>>>     <bean id="muzikService"
>>> class="com.test.servicemix.service.MusicService">
>>>         <property name="musicDao" ref="HibernateMusicDao"/>
>>>     </bean>
>>>
>>> </beans>
>>>
>>>
>>> MusicService.java:
>>>
>>> @Transactional
>>> @WebService(endpointInterface =
>>> "com.test.servicemix.service.IMusicService")
>>> public class MusicService implements IMusicService {
>>> ...
>>> }
>>> ##############################################
>>>
>>> Thanks in advance!
>>>
>>> -los
>>> --
>>> View this message in context:
>>> http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8130814
>>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>>
>>>
>> 
>> 
>> -- 
>> Cheers,
>> Guillaume Nodet
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8135048
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: issues with jsr181 annotations and Spring transactions

Posted by moraleslos <mo...@hotmail.com>.
Thanks Guillaume,

Looks like it deployed succesfully now (must be the serviceInterface
attribute that helped).  However, when invoking this service I get the
following exception:

org.codehaus.xfire.fault.XFireFault: Not enough message parts were received
for the operation.
	at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.fillInHolders(ServiceInvocationHandler.java:226)
	at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:71)
	at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
	at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
	at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
	at
org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(Jsr181ExchangeProcessor.java:110)
	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:619)

Any ideas of the cause?  Thanks in advance.

-los



gnodet wrote:
> 
> Try something like that:
> 
>   <jsr181:endpoint service="foo:MusicService"
>                    endpoint="MusicServicePort"
>                    pojo="#muzikService"
>                   
> serviceInterface="com.test.servicemix.service.IMusicService"
>                    typeMapping="jaxb2"
>                    annotations="jsr181"
>                    style="document" />
> 
> 
> On 1/2/07, moraleslos <mo...@hotmail.com> wrote:
>>
>> When deploying my jsr181 component, I get the following exception:
>>
>> org.codehaus.xfire.annotations.AnnotationException: Class $Proxy34 does
>> not
>> have a WebService annotation
>>
>> This occurs when my jsr181-annotated service class is participating in a
>> Spring-managed transaction, e.g. @Transactional.  When I take the
>> @Transactional annotation out, it deploys successfully (although it won't
>> work since it needs to be inside a transaction).  How do I go about to
>> deploy this web service succesfully?  Below is my appropriate config and
>> classes:
>>
>>
>> ***************************************
>> xbean.xml:
>>
>> <beans
>>         xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"
>>         xmlns:foo="http://com.test.servicemix.ws">
>>
>> <import
>> resource="classpath:com/test/servicemix/service/music-service-context.xml"/>
>> ...
>>
>>
>>     <jsr181:endpoint
>>         service="foo:MusicService"
>>         pojo="#muzikService"
>>                 annotations="jsr181"/>
>> </beans>
>>
>>
>> music-service-context.xml:
>>
>> <beans...>
>>         <!-- hibernateTxManager defined in another imported spring
>> context
>> resource -->
>>         <tx:annotation-driven transaction-manager="hibernateTxManager"/>
>>
>>         <!-- services -->
>>     <bean id="muzikService"
>> class="com.test.servicemix.service.MusicService">
>>         <property name="musicDao" ref="HibernateMusicDao"/>
>>     </bean>
>>
>> </beans>
>>
>>
>> MusicService.java:
>>
>> @Transactional
>> @WebService(endpointInterface =
>> "com.test.servicemix.service.IMusicService")
>> public class MusicService implements IMusicService {
>> ...
>> }
>> ##############################################
>>
>> Thanks in advance!
>>
>> -los
>> --
>> View this message in context:
>> http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8130814
>> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>>
>>
> 
> 
> -- 
> Cheers,
> Guillaume Nodet
> 
> 

-- 
View this message in context: http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8131683
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: issues with jsr181 annotations and Spring transactions

Posted by Guillaume Nodet <gn...@gmail.com>.
Try something like that:

  <jsr181:endpoint service="foo:MusicService"
                   endpoint="MusicServicePort"
                   pojo="#muzikService"
                   serviceInterface="com.test.servicemix.service.IMusicService"
                   typeMapping="jaxb2"
                   annotations="jsr181"
                   style="document" />


On 1/2/07, moraleslos <mo...@hotmail.com> wrote:
>
> When deploying my jsr181 component, I get the following exception:
>
> org.codehaus.xfire.annotations.AnnotationException: Class $Proxy34 does not
> have a WebService annotation
>
> This occurs when my jsr181-annotated service class is participating in a
> Spring-managed transaction, e.g. @Transactional.  When I take the
> @Transactional annotation out, it deploys successfully (although it won't
> work since it needs to be inside a transaction).  How do I go about to
> deploy this web service succesfully?  Below is my appropriate config and
> classes:
>
>
> ***************************************
> xbean.xml:
>
> <beans
>         xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"
>         xmlns:foo="http://com.test.servicemix.ws">
>
> <import
> resource="classpath:com/test/servicemix/service/music-service-context.xml"/>
> ...
>
>
>     <jsr181:endpoint
>         service="foo:MusicService"
>         pojo="#muzikService"
>                 annotations="jsr181"/>
> </beans>
>
>
> music-service-context.xml:
>
> <beans...>
>         <!-- hibernateTxManager defined in another imported spring context
> resource -->
>         <tx:annotation-driven transaction-manager="hibernateTxManager"/>
>
>         <!-- services -->
>     <bean id="muzikService"
> class="com.test.servicemix.service.MusicService">
>         <property name="musicDao" ref="HibernateMusicDao"/>
>     </bean>
>
> </beans>
>
>
> MusicService.java:
>
> @Transactional
> @WebService(endpointInterface = "com.test.servicemix.service.IMusicService")
> public class MusicService implements IMusicService {
> ...
> }
> ##############################################
>
> Thanks in advance!
>
> -los
> --
> View this message in context: http://www.nabble.com/issues-with-jsr181-annotations-and-Spring-transactions-tf2910107s12049.html#a8130814
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>


-- 
Cheers,
Guillaume Nodet