On Apr 14, 2009, at 1:31 PM, Jonathan Gallimore wrote:
I had hoped it might work, but I'm not surprised it didn't. I've
always
found I need to create both interfaces and have the same methods in
both.
I did try and setting the WS interface to extend the local one, and
had the
same error as you. The other way round seemed to work, though.
This seems to be a CXF issue. When the WS interface extends anything,
it seems the methods of the extended interfaces are not seen by CXF
and just result in:
javax.xml.ws.WebServiceException: Could not find operation info for
web method sum.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
102)
at $Proxy18.sum(Unknown Source)
at
org
.superbiz
.calculator
.CalculatorTest.testCalculatorViaWsInterface(CalculatorTest.java:52)
Seems CXF might be calling 'getDeclaredMethods()' on the service
endpoint interface and only preparing "operation info" for those
methods. Would be nice to get this to work, but will likely require
someone to dig into the CXF side of things.
As David says, we could probably make this work, but its against the
current
spec, so the code might not work with other containers. I'm happy to
have a
go at this when I have some free time (unless someone else beats me
to it)
;-)
Most the way through the "universal interface" sort of support, but
this won't fix the CXF issue of not supporting one interface extending
another. I'm not sure if the JAX-WS spec says anything about that,
but it seems like a bug to me. Feel free to grab that ball and run
with it :)
-David