Has anyone implemented a JDBC-based Web Services?  I am attempting to
implement 3 basic servcies to access a database: 

1. openDB()- returns a JDBC Connection object;
2. selectFrom(Connection con, String sql_stmt)- returns the ResultSet of
a Select statement encoded in sql_stmt;
3. closeDB(Connection con)- close the database connection.

I modified the simple client example in Axis User's Guide to access the
3 web services above (client code attached below).  At this point,
openDB returns null.  Need some advice or suggestions here.

Philip
p.s.- client code
/********************JDBC Web Services
Client****************************/
package com.test;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;

import javax.xml.rpc.ParameterMode;

import java.sql.*;
public class jwsChatClient
{
        private String Method;  
        private String ErrMsg;

        public void jwsChatClient() {
                Method= "none";
        }

        public Connection jwsOpenDB() {
           //Web Services endpoint
       String endpoint = "http://localhost:8000/axis/jspChat.jws";;
              
       //method=add or subtract for the calculator services
       if (! Method.equals("openDB")  ) {
           setErrMsg("Usage: jwsChatClient <openDB()> ");
           return null;
       }
           try {
                 Service  service = new Service();
         Call     call    = (Call) service.createCall();

         call.setTargetEndpointAddress( new java.net.URL(endpoint) );
         call.setOperationName( Method );

           call.setReturnClass(Connection.class);

         Connection conn = (Connection) call.invoke( new Object [] { });
                 setErrMsg("Connected to remote DB via JWS: " + conn);
             return conn;
           }
        catch(Exception E) {setErrMsg("->" + E.toString()); return
null;}
   }

   public int jwsCloseDB(Connection conn) {
           //Web Services endpoint
       String endpoint = "http://localhost:8000/axis/jspChat.jws";;
              
       //method=add or subtract for the calculator services
       if (! Method.equals("closeDB")  ) {
           setErrMsg("Usage: jwsChatClient <closeDB(conn)> ");
           return -1;
       }
           try {
                 Service  service = new Service();
         Call     call    = (Call) service.createCall();

         call.setTargetEndpointAddress( new java.net.URL(endpoint) );
         call.setOperationName( Method );
                 call.addParameter("op1", XMLType.XSD_ANYTYPE,
Connection.class, ParameterMode.IN);

         call.invoke( new Object [] { conn });
                 setErrMsg("Connection closed to remote DB via JWS.");
             return 0;
           }
        catch(Exception E) {setErrMsg("->" + E.toString()); return -1;}
   }
                
   public ResultSet jwsSelectFrom(Connection conn, String sqlstr) {
           
           //Web Services endpoint
       String endpoint = "http://localhost:8000/axis/jspChat.jws";;
              
       //method=add or subtract for the calculator services
       if (! Method.equals("selectFrom") ) {
           setErrMsg("Usage: jwsChatClient <selectFrom(connection,
sqlstr> ");
           return null;
       }
           try {
                 Service  service = new Service();
         Call     call    = (Call) service.createCall();

         call.setTargetEndpointAddress( new java.net.URL(endpoint) );
         call.setOperationName( Method );
         call.addParameter( "op1", XMLType.XSD_ANYTYPE,
Connection.class, ParameterMode.IN );
         call.addParameter( "op2", XMLType.XSD_ANYTYPE, String.class,
ParameterMode.IN );
         call.setReturnClass( ResultSet.class );

         ResultSet rs = (ResultSet) call.invoke( new Object [] { conn,
sqlstr });
                 setErrMsg("Got result : " + rs);
             return rs;
           }
        catch(Exception E) {setErrMsg("->" + E.toString()); return
null;}
   }
        
   public void setErrMsg(String str1) {ErrMsg = str1;}
   public String getErrMsg() {return ErrMsg;}

   public void setMethod(String str1) {Method = str1;}
   public String getMethod() {return Method;}

}

Reply via email to