Problem of polymorphism Web Service in EJB
ybxiang.china Nov 5, 2009 8:27 PMDear friends,
I can use pure polymorphism Web Service in Glassfish and JBoss correctly.
But, after annotated with @Stateless, my codes does NOT work.
Namely, i can not make my code work in EJB3 environment.
My environment:
JDK, lates.
jboss-5.1.0.GA-jdk6
Windows XP.
My java files:
package com.ybxiang.ejbws;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlSeeAlso({Human.class})
public class Animal implements java.io.Serializable{
private String name;
private Long age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String toString(){
return "Animal-->name:"+this.getName()+",age:"+this.getAge();
}
}
package com.ybxiang.ejbws;
public class Human extends Animal implements java.io.Serializable{
private String email;
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
public String toString(){
return "Human-->name:"+this.getName()+",age:"+this.getAge()+","+"email:"+email;
}
}
package com.ybxiang.ejbws;
import java.util.ArrayList;
import java.util.Iterator;
import javax.jws.WebMethod;
public interface EJBWebServiceInterface {
public void passParameter1(String s);
public void passParameter2(Animal a);
public void passParameter3(Human h);
public void passParameter4(ArrayList<Animal> lst);
public ArrayList<? extends Animal> returnSomething1(int type);
}
package com.ybxiang.ejbws;
import java.util.ArrayList;
import java.util.Iterator;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.jws.soap.SOAPBinding;
@Stateless
@WebService
//@**XmlSeeAlso({Animal.class, Human.class})// Here i tried too!
public class EJBWebServiceBean implements EJBWebServiceInterface{
@WebMethod
public void passParameter1(String s){
System.out.println("------------String is got:"+s);
}
@WebMethod
public void passParameter2(Animal a){
System.out.println("------------Animal is got:"+a);
if(a instanceof Human){
System.out.println("************* It's realy human!!! *************");
}
}
@WebMethod
public void passParameter3(Human h){
System.out.println("------------Human is got, name:"+h.getName()+", email:"+h.getEmail());
}
@WebMethod
public void passParameter4(ArrayList<Animal> lst){
System.out.println("------------ArrayList<Animal> is got:");
if(lst!=null){
Iterator<Animal> it = lst.iterator();
Animal a = it.next();
if(a instanceof Human){
System.out.println("One human is got:"+((Human)a));
}else{
System.out.println("One Animal is got:"+a);
}
}else{
System.out.println("------------List is null.");
}
}
@WebMethod
public ArrayList<? extends Animal> returnSomething1(int type){
if(type==1){
ArrayList<Animal> aa = new ArrayList<Animal>();
{
Animal animal1 = new Animal();
animal1.setName("Animal.1");
animal1.setAge(new Long(1));
aa.add(animal1);
}
{
Animal animal2 = new Animal();
animal2.setName("Animal.2");
animal2.setAge(new Long(2));
aa.add(animal2);
}
return aa;
}else{
ArrayList<Human> bb = new ArrayList<Human>();
{
Human human1 = new Human();
human1.setName("Human.1");
human1.setAge(new Long(1));
bb.add(human1);
}
{
Human human2 = new Human();
human2.setName("Human.2");
human2.setAge(new Long(2));
bb.add(human2);
}
return bb;
}
}
}