具有不同数据类型的Web服务?

时间:2012-04-11 20:33:15

标签: web-services java-ee

我正在编写我的第一个网络服务,就目前而言还不错,但是当我尝试创建sperate类时:

public class Workers {

private String name;
private String surname;
private boolean type;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getSurname() {
    return surname;
}

public void setSurname(String surname) {
    this.surname = surname;
}

public boolean isType() {
    return type;
}

public void setType(boolean type) {
    this.type = type;
}

public Workers(String name, String surname, boolean type) {
    this.name = name;
    this.surname = surname;
    this.type = type;
}



}

而不是在像这样的webservice中使用它:

@WebMethod(operationName = "SelectWorker")
public Pracownicy SelectWorker(@WebParam(name = "username") String username,       @WebParam(name = "password") String password) {

   ResultSet rs = null;
   String name = null;
   String surname = null;
   boolean type = false;

    PreparedStatement st = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("db_address", "login", "password");
        System.out.println("connection status: " +con);
        st = con.prepareStatement("select name, surname from clients where login = ? and  passwd= ?");
        st.setString(1, username);
        st.setString(2, password);
        rs = st.executeQuery();

        if (rs.next()) {
           name = rs.getString(2);
           surname=rs.getString(3);
           type = rs.getBoolean(5);
           Workers pr = new Workers(name, surname, type);
           return pr;
        }
    } catch (Exception e) {
        System.out.println("error: " + e.toString());
    }


    return null;
}

方法的主体可以是空的或填充代码,没关系 - 我得到同样的错误:

Error occurred during deployment: Exception while loading the app    
:java.lang.IllegalStateException: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: java.lang.RuntimeException: Servlet web 
service endpoint '' failure.

int,string,boolean等只允许作为返回类型吗?

3 个答案:

答案 0 :(得分:1)

你的帖子中没有提供足够的信息......你是如何创建网络服务的(我猜是使用@WebService),你告诉它无关紧要是方法SelectWorker(应该调用哪个顺便说一句) selectWorker通过适当的命名约定)是空的或不是,但是有一个空体,你的源甚至不会编译......

我可以告诉你:int,String,boolean不是唯一允许的返回类型。您当然也可以从Web服务返回类的实例。

答案 1 :(得分:0)

未来的googlers:

我遇到了同样的错误,并检查了服务器日志并得到错误:

  

两个类具有相同的XML类型名称

我发现这很奇怪但是添加了这个:

@XmlType(namespace="someName")

对于我的班级,我试图返回(我选择了同名的班级)修复了问题。

答案 2 :(得分:0)

我有这个问题,glassfish是在Linux环境下。检查你的$ JAVA_HOME 它应该设置为jdk

导出JAVA_HOME = / usr / java / jdk1.7.0_55

/ opt / glassfish4 / glassfish / bin #echo $ JAVA_HOME

/usr/java/jdk1.7.0_55

然后问题解决了..