0

我正在编写我的第一个 Web 服务之一,就目前而言它还不错,但是当我尝试创建 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;
}



}

而不是像这样在网络服务中使用它:

@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 等作为返回类型?

4

3 回答 3

1

你的帖子中没有提供足够的信息......你是如何创建网络服务的(我猜是@WebService),你告诉它是否方法SelectWorker(顺便说一句应该适当地称为selectWorker)并不重要命名约定)是否为空,但是如果正文为空,您的源代码甚至无法编译...

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

于 2012-04-12T07:47:04.847 回答
0

对于未来的谷歌人:

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

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

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

@XmlType(namespace="someName")

我试图返回我的班级(我选择了相同的班级名称)解决了这个问题。

于 2013-04-21T11:36:18.807 回答
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

然后问题就解决了。。

于 2014-12-04T05:25:54.490 回答