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.

Reply via email to