服务器端代码:SqlServer.javaimport java.sql.*;public class SqlServer {
private String driverStr = "sun.jdbc.odbc.JdbcOdbcDriver";
private String connStr = "jdbc:odbc:mydbsource";
private Connection conn = null;
private Statement stmt = null; public SqlServer() 
{
System.out.println("register drever....");
try {
Class.forName(driverStr); 
}
catch(ClassNotFoundException ex) {
System.out.println(ex.getMessage());
}
}
public void setDriverStr(String dstr)
{
driverStr=dstr;
}
public void setConnStr(String cstr)
{
connStr=cstr;
}
public ResultSet executeQuery(String sql) 
{
ResultSet rs = null;
try {
conn = DriverManager.getConnection(connStr); 
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);

catch(SQLException ex) { 
System.out.println(ex.getMessage());
}
return rs;
}
public int executeUpdate(String sql)
{
int result=0;
try{
conn = DriverManager.getConnection(connStr);
stmt = conn.createStatement();
result = stmt.executeUpdate(sql);
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
return result;
}
public void close()
{
try{
stmt.close();
conn.close();
}
catch(SQLException ex){
System.out.println(ex.getMessage());
}
}
}客户端代码:SqlClient.javapackage client;import java.sql.SQLException;import javax.xml.namespace.QName;   import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;   
import org.apache.axis2.client.Options;   
import org.apache.axis2.rpc.client.RPCServiceClient;  public class SqlClient {
@SuppressWarnings("unchecked")
public static  void main(String []args){
RPCServiceClient serviceClient = null;
try {
serviceClient = new RPCServiceClient();
} catch (AxisFault e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}   
        Options options = serviceClient.getOptions();   
        EndpointReference targetEPR = new EndpointReference(   
                "http://127.0.0.1:8080/axis2/services/rpcsql");   
        options.setTo(targetEPR);    
        Object[] opAddEntryArgs = new Object[]{"select * from book" };   
        Class[] classes = new Class[]{ java.sql.ResultSet.class };   
        QName opAddEntry = new QName("http://ws.apache.org/axis2","executeQuery");   
 
        java.sql.ResultSet rs = null;
try {
rs = (java.sql.ResultSet) serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
} catch (AxisFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
}    System.out.println("\nbookid\t\tpubtime\t\tbookname\n-------\t\t-------\t\t-------");
try {
while(rs.next())
{
System.out.println(rs.getInt("bookid")+"\t\t"+rs.getDate("pubtime")+"\t"+rs.getString("bookname"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}结果是不能进行:log4j:WARN No appenders could be found for logger (org.apache.axis2.util.Loader).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: org.apache.axis2.AxisFault: Mapping qname not fond for the package: sun.jdbc.odbc
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:548)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:528)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
at client.SqlClient.main(SqlClient.java:32)
Exception in thread "main" java.lang.NullPointerException
bookid pubtime bookname
------- ------- ------- at client.SqlClient.main(SqlClient.java:40)
为什么说"Mapping qname not fond for the package: sun.jdbc.odbc"啊?
这儿是不是致命的呢?若是该怎么做?
若不是那么又该怎么做?
小弟初学,找不到参考资料,刚开始用axis2的eclipse插件生成的代码,结果被stub类给搞晕了.
想先学习采用RPC方式调用,结果又弄了半天不知如何解决,拜请各位大大帮忙~~