I also put a 0-arg default constructor for XChild, as you said, but still
throws the same exception!
My code is exactly the same as Child-Parent example (I posted here!) :S It
seems that it should work!!! I am totally confused :S
Arul Dhesiaseelan wrote:
>
> Make sure you have a 0-arg default constructor in place for XChild as
> this is required for JAXB.
>
> -Arul
>
> Fatemeh Chitforoush wrote:
>> Thanx for your reply.
>>
>> I changed the implementation as you said:
>>
>> @WebService
>> @XmlSeeAlso({XChild.class})
>> public interface ChildServiceInterface extends ParentServiceInterface{
>> @WebMethod
>> public String[] getXList();
>> }
>>
>> and now, there is no exception during tomcat start-up, but as I call the
>> service from client, this exception is thrown by JAXB:
>> javax.xml.bind.JAXBException : XChild is not known to this context !!!!
>>
>> Don't you know the solution?!
>>
>> -- fatemeh
>>
>>
>> dkulp wrote:
>>
>>> This is doable, but requires a little bit more setup....
>>>
>>> First, the method signature must stay the same as what's in the
>>> interface. It needs to stay:
>>> public X[] getXList();
>>> We only invoke on the actual method object defined from the interface.
>>>
>>> The key issue is getting the XChild classes available to JAXB. The
>>> EASIEST way to do that is to add an annotation to the Interface:
>>> @XmlSeeAlso({XChild.class})
>>> (might be able to add it to the impl instead, not really sure)
>>>
>>> Dan
>>>
>>>
>>>
>>> On Jul 30, 2008, at 4:15 AM, Fatemeh Chitforoush wrote:
>>>
>>>
>>>> Hi,
>>>>
>>>> Thanx for your reply :)
>>>> BTW, I'm using Spring too, and I think maybe the problem relates to
>>>> the
>>>> service implementor, which returns XChild instead of X! In fact,
>>>> this part
>>>> is not covered in your sample test :S Actually i need inherited
>>>> services to
>>>> return objects of different classes (which also extends X)! What do
>>>> you
>>>> think?!
>>>>
>>>> -- fatemeh
>>>>
>>>>
>>>> Arul Dhesiaseelan wrote:
>>>>
>>>>> Basically, you override base interface method in
>>>>> ChildServiceInterface.
>>>>> So, this should work by all means.
>>>>>
>>>>> I know for sure this works standalone CXF. I haven't tested in a
>>>>> servlet
>>>>> container.
>>>>>
>>>>> Here is my standalone test, in case if you are interested.
>>>>>
>>>>> public interface ParentServiceInterface {
>>>>> public String[] getXList();
>>>>> }
>>>>>
>>>>> @WebService
>>>>> public interface ChildServiceInterface extends
>>>>> ParentServiceInterface{
>>>>> @WebMethod
>>>>> public String[] getXList();
>>>>> }
>>>>>
>>>>> public class ChildServiceImpl implements ChildServiceInterface {
>>>>> public String[] getXList(){
>>>>> return new String[] {"child"};
>>>>> }
>>>>> }
>>>>>
>>>>> public class Server {
>>>>> public static void main(String args[]) {
>>>>> System.out.println("Starting Server");
>>>>> ChildServiceImpl implementor = new ChildServiceImpl();
>>>>> String address = "http://localhost:9000/child";
>>>>> Endpoint.publish(address, implementor);
>>>>> }
>>>>> }
>>>>>
>>>>> public class Client {
>>>>> public static void main(String args[]) {
>>>>> JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>>>>> factory.setServiceClass(ChildServiceInterface.class);
>>>>> factory.setAddress("http://localhost:9000/child");
>>>>>
>>>>> ChildServiceInterface client =
>>>>> (ChildServiceInterface)factory.create();
>>>>> System.out.println("Invoke getXList()....");
>>>>> System.out.println(client.getXList()[0]);
>>>>> System.exit(0);
>>>>>
>>>>> }
>>>>> }
>>>>>
>>>>> HTH.
>>>>>
>>>>> Cheers,
>>>>> Arul
>>>>>
>>>>> Fatemeh Chitforoush wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Does CXF support inheritance in service interfaces?
>>>>>> I want to have a common interface for a number of services, so I
>>>>>> have a
>>>>>> parent interface, and all my service interfaces extend this parent
>>>>>> interface. When i try to fire up tomcat, this exception is thrown:
>>>>>> An opration "an operation with name [] already exists in this
>>>>>> service.
>>>>>> Does CXF support what I want?
>>>>>>
>>>>>> Sample code:
>>>>>> public interface ParentServiceInterface {
>>>>>> public X[] getXList();
>>>>>> }
>>>>>>
>>>>>> public interface ChildServiceInterface extends
>>>>>> ParentServiceInterface{
>>>>>> @WebMethod
>>>>>> public X[] getXList();
>>>>>> }
>>>>>>
>>>>>> public class ChildServiceImpl implements ChildServiceInterface {
>>>>>> public XChild[] getXList(){
>>>>>> .......
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> public class XChild extends X{
>>>>>> ......
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/Service-Interface-Extension-in-CXF-tp18708779p18728166.html
>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>
>>>>
>>> ---
>>> Daniel Kulp
>>> [EMAIL PROTECTED]
>>> http://www.dankulp.com/blog
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>
>
--
View this message in context:
http://www.nabble.com/Service-Interface-Extension-in-CXF-tp18708779p18825689.html
Sent from the cxf-user mailing list archive at Nabble.com.