I have a question on the same lines. I realized that tuscany no longer uses Axis for wsdl2java from 1.3 onwards, the changes file mentions performance reasons. Is the Tuscany solution the reason that one needs to annotate their code in a variety of circumstances. I do not need to do the same when using Axis2 natively. That obviously shields a developer from having to learn JAXB. What are the benefits of the Tuscany approach?
Thanks, Rohan On Fri, Feb 13, 2009 at 3:57 AM, Ramkumar R <[email protected]> wrote: > Hi Raymond, > > You are right, I can put this in place. > > On Fri, Feb 13, 2009 at 11:05 AM, Raymond Feng <[email protected]> wrote: >> >> Hi, >> >> I think we need to hava an FAQ for these kind of issues. >> >> Tuscany treats POJO as JAXB for the XML serialization/deserialization. >> JAXB has a set of default rules that map java properties to XML >> elements. The simplest case is to use JavaBeans to represent the data. >> Interfaces cannot be directly supported unless you use the techniques >> described in [1]. >> >> In your case, your Employee class can look like: >> >> public class Employee >> { >> public String name=""; // You can use setter/getter pattern too >> public String id=""; >> public String exportValue( String nameid ){ >> return nameid; >> } >> public Object importValue( String name, String id ){ >> this.name=name; this.id=id; return name+id; >> } >> } >> [1] https://jaxb.dev.java.net/guide/Mapping_interfaces.html >> >> Thanks, >> Raymond >> From: Tuscany User >> Sent: Thursday, February 12, 2009 8:50 PM >> To: [email protected] >> Subject: IllegalAnnotationsException - exposing soap service >> Hi all, >> I was trying a simple calculator soap service and ran into the >> following exception. Please suggest on what can be done to overcome this >> exception. >> SEVERE: Exception thrown was: org.osoa.sca.ServiceRuntimeException: >> com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of >> IllegalAnnotationExceptions >> com.samples.simpleCalculatorSOAP.EmployeeInterface is an interface, and JAXB >> can't handle interfaces. >> this problem is related to the following location: >> at com.samples.simpleCalculatorSOAP.EmployeeInterface >> at public >> com.samples.simpleCalculatorSOAP.EmployeeInterface >> com.samples.simpleCalculatorSOAP.Employee1.getEmployeeInterface() >> at com.samples.simpleCalculatorSOAP.Employee1 >> com.samples.simpleCalculatorSOAP.EmployeeInterface does not have a no-arg >> default constructor. >> this problem is related to the following location: >> at com.samples.simpleCalculatorSOAP.EmployeeInterface >> at public >> com.samples.simpleCalculatorSOAP.EmployeeInterface >> com.samples.simpleCalculatorSOAP.Employee1.getEmployeeInterface() >> at com.samples.simpleCalculatorSOAP.Employee1 >> The class that is exposed as soap service is as below. >> package com.samples.simpleCalculatorSOAP; >> import org.osoa.sca.annotations.Remotable; >> @Remotable >> public class SimpleCalculatorServiceImpl extends >> SimpleCalculatorServiceImplBase { >> public String add(double n1, double n2){ >> Double temp = n1+n2; return temp.toString(); >> } >> public String subtract(double n1, double n2){ >> Double temp = n1-n2; return temp.toString(); >> } >> public String multiply(double n1, double n2){ >> Double temp = n1*n2; return temp.toString(); >> } >> public String divide(double n1, double n2){ >> Double temp = n1/n2; return temp.toString(); >> } >> >> } >> >> The definition of the remaining classes/interfaces is as below. >> >> --------------------------------------------------------------------------------------- >> package com.samples.simpleCalculatorSOAP; >> public class SimpleCalculatorServiceImplBase { >> public final void setEmployee1(Employee1 e){ >> System.out.println(e.getId()+" "+e.getName()); >> } >> } >> >> --------------------------------------------------------------------------------------- >> package com.samples.simpleCalculatorSOAP; >> public final class Employee1 { >> private EmployeeInterface ei = null; >> public void setEmployeeInterface(EmployeeInterface e){ >> this.ei=e; >> } >> >> public EmployeeInterface getEmployeeInterface(){ >> return ei; >> } >> } >> >> --------------------------------------------------------------------------------------- >> package com.samples.simpleCalculatorSOAP; >> public interface EmployeeInterface { >> public String exportValue( String nameid ); >> public Object importValue( String name, String id ); >> } >> >> --------------------------------------------------------------------------------------- >> package com.samples.simpleCalculatorSOAP; >> public class EmployeeImpl implements EmployeeInterface >> { private String name=""; private String id=""; >> public String exportValue( String nameid ){ >> return nameid; >> } >> public Object importValue( String name, String id ){ >> this.name=name; this.id=id; return name+id; >> } >> } >> >> --------------------------------------------------------------------------------------- >> >> The example does not make sense on the implementation stand point, I >> mean we are looking into the calculator implementation and then we have some >> piece that talks about Employee. I was not looking to get this sample right, >> this sample was meant for experimenting a few things and then hit the >> IllegalAnnotationsException. Please suggest what annotations have to be >> added to make this sample working. It would be great if you guys can added >> the annotations in the above pseudo code itself to make this sample working. >> By working I mean atleast deploying since I am hitting the issue while >> deploying this app. >> >> Thanks. > > > > -- > Thanks & Regards, > Ramkumar Ramalingam >
