我正在编写我的第一个网络服务,就目前而言还不错,但是当我尝试创建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等只允许作为返回类型吗?
答案 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
然后问题解决了..