我制作了一个网络服务,它只是显示来自数据库的用户数据。但是当我运行客户端时,我不断收到这个异常。
Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF; was expecting a close tag for element at [row,col {unknown-source}]: [1,110]
////////////////////这是网络服务代码////////////////////////////////
@WebMethod(operationName = "viewUserData")
public ArrayList viewUserData() {
//TODO write your implementation code here:
Statement stmt = null;
ResultSet rs = null;
String query = "";
//ArrayList<HashMap> list = new ArrayList<HashMap>();
ArrayList list = new ArrayList();
try {
String connectionURL = "jdbc:oracle:thin:@p5";
Connection connection = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection(connectionURL, "backconnect", "backconnect");
query = "select * from users";
stmt = connection.createStatement();
rs = stmt.executeQuery(query);
while(rs.next()){
/*HashMap<String,Object> map = new HashMap<String,Object>();
map.put("USER_ID", rs.getString("USER_ID"));
map.put("NAME", rs.getString("NAME"));
map.put("SHORT_NAME", rs.getString("SHORT_NAME"));
map.put("PASSWORD", rs.getString("PASSWORD"));*/
SetData sdata = new SetData();
sdata.setUSER_ID(rs.getString("USER_ID"));
sdata.setNAME(rs.getString("NAME"));
sdata.setSHORT_NAME(rs.getString("SHORT_NAME"));
sdata.setPASSWORD(rs.getString("PASSWORD"));
/*list.add(rs.getString("USER_ID"));
list.add(rs.getString("NAME"));
list.add(rs.getString("SHORT_NAME"));
list.add(rs.getString("PASSWORD"));*/
list.add(sdata);
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return list;
}
SetData 是一个java bean ///////////////////这是客户端代码//////////////////
package1.GetUserDataService service = new package1.GetUserDataService();
package1.GetUserData port = service.getGetUserDataPort();
// TODO process result here
java.util.List<java.lang.Object> result = port.viewUserData();
out.println("Result = "+result);
我深陷其中。如何解决这个问题。
最佳答案
我会尝试做的第一件事是弄清楚这到底是客户端错误还是服务器错误。
使用Fiddler或 Wireshark拦截从客户端到服务器的流量,并检查 SOAP 请求是否有效。
您还没有说您是在客户端还是在服务器端收到异常本身,所以请求可能会顺利到达那里,但客户端没有读取< em>正确响应。
编辑:为了简化事情,您可能只想暂时硬编码一些数据。它看起来不像问题出在数据库代码本身,所以通过删除所有这些来简化诊断 - 只需硬编码几个名称即可返回......您甚至可能想要将其更改为返回 int
,只是为了查看问题是否出在 ArrayList
上。
关于java - 在基本网络服务中获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5725809/