It's not a real application yet.  We are trying to build
dbms-independent data services.

-----Original Message-----
From: Benjamin Tomasini [mailto:[EMAIL PROTECTED]]
Sent: Friday, February 14, 2003 1:27 PM
To: [EMAIL PROTECTED]
Subject: Re: JDBC-based Web Services (?)


I don't think you want to expose db calls over a web service.  That is
pretty low level.  I am curious what application would require such
features.  

On Fri, 2003-02-14 at 16:41, Philip Li wrote:
> 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