FYI ... it looks like CXF 2.3 will support automatic discovery of
@WebService annotations.

https://issues.apache.org/jira/browse/CXF-1355

Matt

On Mon, Oct 12, 2009 at 7:06 PM, jackalista <j...@twaxx.com> wrote:
>
> Hi,
>
> I managed to resolve this, it turns out 3 things had to be changed:
>
> 1. Apparently the CXFServlet and the MuleRESTReceiverServlet don't play nice
> together. I'm not shocked about this but I am disappointed; I wanted to run
> services both from mule and from the web app but it looks like that may not
> be possible.  You must take the CXFServlet (or most likely the XFire servlet
> too) out of your web.xml and remove the mapping and map the mule receiver
> servlet to /services/*.
>
> 2. Similarly, thou shalt not declare any endpoints via CXF means (again,
> likely also true of xfire), at least not via cxf-servlet.xml. I had this
> declaration in cxf-servlet.xml but needed to comment it out, as CXF will
> publish it even with the CXFServlet not in play:
>
> <!--
> <jaxws:endpoint
> id="FooService"
> implementor="#fooManager"
> address="/FooService" >
> </jaxws:endpoint>
> -->
>
> 3. The above two were not shocking, I had doubts from the get-go about
> running both CXF and mule servlets together in the same web app but this
> last part surprised me. I had found an example on the mule site showing how
> to change the databinding. The example shows an inbound-endpoint with CXF
> prefix, instead of the prefix-less inbound-endpoint I found in the bookstore
> example. It didn't seem like I could change the binding to aegis without
> using the prefix but when I used the prefix I got a
> MalformedEndpointException... but if I remove the cxf prefix (and also the
> binding directive), it works fine... ?!?!?  I haven't any deep detail on
> that yet but I'll try to come back and update this to make it easier for the
> next guy... the mule example webapp code is no where near as functional nor
> as pretty as appfuse so I want to get this working to facilitate building
> mule web apps.  The problematic and working config for the mule endpoint are
> here...
>
> This structure throws a MalformedEndpointException:
>
> <cxf:inbound-endpoint address="cxf:http://0.0.0.0:8888/services/FooService";>
> <cxf:databinding>
> <spring:bean class="org.apache.cxf.aegis.databinding.AegisDatabinding"/>
> </cxf:databinding>
> </cxf:inbound-endpoint>
>
> This structure does not throw any exceptions and the web app loads:
>
> <inbound-endpoint address="cxf:http://0.0.0.0:8888/services/FooService"/>
>
>
> -=j=-
>
>
>
> jackalista wrote:
>>
>> Thx Matt, I'll take a look at that, I now have a full-src dist for such
>> things set up.
>>
>> However, what would be preferable to such a tactic might be a
>> non-intrusive fix via an XML mapping file, would it not?  Then, a
>> mule/appfuse hybrid could remain a reusable starter app with mule, and you
>> would simply have to add an Aegis XML mapping file to expose your existing
>> mgr classes as mule services.  I'm pretty sure each service class,
>> inheriting and parameterizing the getALL() from the GenericManager, could
>> declare it in a Foo.aegis.xml mapping file, at least I'm going to try it.
>>
>> It seems like Aegis is the better binding to use (and is easy to configure
>> in mule) as it has support for Collections which are widely used in
>> appfuse and it broke less severely than JAXB too but it's academic until
>> it stops breaking, hopefully the mapping file will do it... Let me know
>> what you think, I'm up to my ear lobes in it anyway so now's the time.
>>
>> --j
>>
>>
>> mraible wrote:
>>>
>>> AppFuse 2.0.2 used a separate service for webservices
>>> (UserService.java) and didn't use the getAll() method. You could try
>>> overriding it in your interface to return a specific type.
>>>
>>> Matt
>>>
>>> On Wed, Oct 7, 2009 at 1:46 PM, jackalista <j...@twaxx.com> wrote:
>>>>
>>>> I ran full-source on a new dist to see how it's defined, I remembered
>>>> incorrectly, the getAll() method returns a list with generics but
>>>> they're
>>>> parameterized, is this the problem?:
>>>>
>>>> List<T> getAll();
>>>>
>>>> public List<T> getAll() {
>>>>    return genericDao.getAll();
>>>> }
>>>>
>>>> Where "T" is a type variable... I'm curious as to what had to be done to
>>>> get
>>>> xfire/xmlbeans to properly map this as maybe I can do the same thing
>>>> with
>>>> CXF/Aegis, does anybody know the details?  I didn't see anything in
>>>> xfire-servlet.xml that seems to be related but I could be wrong.
>>>>
>>>> --jack
>>>>
>>>>
>>>> jackalista wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I was wondering if anybody here might know what's going with an
>>>>> exception
>>>>> I've got embedding mule ESB in an appfuse app.  First, mule itself uses
>>>>> CXF, and I made a version of appfuse work with CXF but this problem
>>>>> exists
>>>>> with both that and an unmodified appfuse that still uses XFire so I
>>>>> suspect that's irrelevant.  It's the miule CXF code that's blowing up
>>>>> on
>>>>> it, using both JAXB and Aegis databinding.  Aegis looks better for
>>>>> handling Collections and things along those lines so I'll show that
>>>>> exception:
>>>>>
>>>>>
>>>>> Caused by: org.apache.cxf.aegis.DatabindingException: Error
>>>>> initializing
>>>>> parameters for operation
>>>>> {http://service.integration.jackalista.org/}getAll:  Cannot create
>>>>> mapping
>>>>> for java.util.List, unspecified component type for method getAll
>>>>> parameter
>>>>> -1
>>>>>
>>>>> Based on the following from this CXF article under the heading
>>>>> "Collections":
>>>>>
>>>>> http://cwiki.apache.org/CXF20DOC/aegis-21.html
>>>>>
>>>>> which says:
>>>>> ---------------------------------------------------------
>>>>> "If you use a 'raw' collection type, Aegis will map it as a collection
>>>>> of
>>>>> xsd:any particles. If you want the WSDL to show it as a collection of
>>>>> some
>>>>> specific type, the easiest thing to do is to use Java generics instead
>>>>> of
>>>>> raw types. If, for some reason, you can't do that, you can use the
>>>>> componentType and keyType attributes of a property to specify the Java
>>>>> classes."
>>>>> ---------------------------------------------------------
>>>>>
>>>>>
>>>>> The getAll() method which is part of appfuse core does return an
>>>>> untyped
>>>>> (no generics) java.util.List, doesn't it?  I'd have thought that Aegis
>>>>> would have mapped it as a collection of xsd:any as it says above but
>>>>> it's
>>>>> blowing up with that exception complaining about the component type of
>>>>> the
>>>>> List which looks kind of like what's in that article.
>>>>>
>>>>> I'm trying to set up code first dev with mule as is done with appfuse
>>>>> web
>>>>> services but am not sure what to do to fix this exception.  Does anyone
>>>>> know why xfire / xmlbeans in appfuse proper has no problem with this
>>>>> but
>>>>> Aegis is throwing up?  Do I need to add further annotations or
>>>>> different
>>>>> ones?  I'd like to get CXF under mule working the same basic way as
>>>>> xfire
>>>>> does under the standard appfuse dist but am not finding too many clear
>>>>> answers in what docs I've seen from the mule and CXF sites.
>>>>>
>>>>> Does anyone know the details about our xfire implementation regarding
>>>>> wsdl
>>>>> / XSD generation and mapping?  And / or can anybody recommend a very
>>>>> comprehensive CXF book / manual / tutorial / etc. that might shed some
>>>>> light on this?  I'd really like to get an appfuse mule starter app up
>>>>> but
>>>>> this needs to be resolved.  If you're interested in the nitty gritty it
>>>>> looks like the latest mule (2.2.2) includes CXF 2.1.5 which it uses for
>>>>> things like databinding and web services support.  I'm also open to
>>>>> input
>>>>> about how to set this up and will share the source, I'm trying to get a
>>>>> decent code first set up analogous to what exists now with xfire but am
>>>>> also interested in a wsdl first set up, feel free to speak up if you
>>>>> have
>>>>> opinions about how that might best be done and I might just do it for
>>>>> you.
>>>>>
>>>>> --j
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/databinding-problem-with-List-from-getAll%28%29-integrating-mule-2.2.2-and-appfuse-2.02-tp25778321s2369p25791241.html
>>>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
>>>> For additional commands, e-mail: users-h...@appfuse.dev.java.net
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
>>> For additional commands, e-mail: users-h...@appfuse.dev.java.net
>>>
>>>
>>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/databinding-problem-with-List-from-getAll%28%29-integrating-mule-2.2.2-and-appfuse-2.02-tp25778321s2369p25865663.html
> Sent from the AppFuse - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
> For additional commands, e-mail: users-h...@appfuse.dev.java.net
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net

Reply via email to