【发布时间】:2012-04-03 18:18:33
【问题描述】:
我正在尝试创建一个 jax-ws Web 服务,该服务将查询 mysql 数据库并从 @WebMethod 返回用户定义的数据类型。我首先尝试返回由 sql 导入提供的 sql.ResultSet。但是,JAXB 无法绑定它。所以我尝试返回一个String[][],但是在客户端读取结果时它显示所有空字段。
然后我尝试创建自己的数据类型,并且我知道我创建的类应该有一个默认构造函数和公共集,并获取该类中定义的所有变量。但我想返回一个结果集。我的网络服务的代码如下:
@WebMethod
public String[][] getSummary(int month, int year){
// register jdbc driver
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch(Exception ex)
{
System.out.print(ex.getMessage());
}
// declare connection, statement and result set
Connection connection = null;
Statement statement = null;
ResultSet resultset = null;
String[][] result = new String[30][8];
int counter = 0;
try
{
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/Livestock?user=root");
statement = connection.createStatement();
resultset = statement.executeQuery("SELECT Category, Particulars, Nos, OriginalCost, AccuDep, WDV, NRV, CapLoss FROM TB_SUMMARY WHERE Month=" + month + " AND Year=" + year);
// loop over result set
while(resultset.next())
{
result[counter][0] = resultset.getString("Category");
result[counter][1] = resultset.getString("Particulars");
result[counter][2] = resultset.getString("Nos");
result[counter][3] = resultset.getString("OriginalCost");
result[counter][4] = resultset.getString("AccuDep");
result[counter][5] = resultset.getString("WDV");
result[counter][6] = resultset.getString("NRV");
result[counter][7] = resultset.getString("CapLoss");
counter++;
}
}
catch(SQLException ex)
{
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
finally
{
// it is a good idea to release
// resources in a finally{} block
// in reverse-order of their creation
// if they are no-longer needed
if(resultset != null)
try
{
resultset.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
resultset = null;
if(statement != null)
try
{
statement.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
statement = null;
}
return result;
}
我不确定 String[][] 中的所有单元格都为空的原因是否是因为代码甚至没有到达 executeQuery();或者它的 jaxb 绑定不起作用。
我仍然不明白 jaxb 是如何工作的。如果有人有一个很好的例子来说明如何将 jaxws 与 jaxb 一起使用,我将不胜感激。我在互联网上找到的文档非常复杂。
【问题讨论】:
标签: java eclipse web-services jaxb jax-ws