글쓴이 :조중현 2000년 5월 10일 11:05:44
In Reply to: 박찬우님 감사 !. 이번엔 RMI 좀 posted by 조중현 on 2000년 5월 10일 09:03:15:
아직 RMI에서 객체 Serialization에 대한 이해가 불충분하여 에러를 못 찾았습니다.
제 짧은 소소를 보시고 조언를 좀 부탁드려도 되겠는지.
=> MyResultSet (ResultSet 객체를 Serialization하려 시도했습니다)
아마도 ..
import java.io.*;
import java.sql.*;
public class MyResultSet implements Serializable {
ResultSet result;
public MyResultSet() {
}
}
=> 원격객체 인터페이스 선언
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.*;
public interface RemoteDBServer extends Remote {
public MyResultSet getData() throws RemoteException;
}
=>구현된 원격객체
import java.rmi.*;
import java.rmi.server.*;
import java.sql.*;
public class DBServer extends UnicastRemoteObject
implements RemoteDBServer {
Connection conn;
public DBServer() throws RemoteException
{
String connString="jdbc:oracle:thin:172.24.1.154:1521:ORCL";
try {
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
}
catch (SQLException e) {
System.out.println("Can not find Class");
}
try {
conn = DriverManager.getConnection("jdbc:oracle:thin:@172.24.1.154:1521:orcl","scott","tiger");
}
catch (SQLException e) {
System.out.println("Can not connect to DB => "+e.getMessage());
}
}
/*원격객체 메소드 입니다.*/
public MyResultSet getData()
{
ResultSet rset=null;
Statement stmt=null;
MyResultSet temp=null;
temp = new MyResultSet();
try {
stmt = conn.createStatement ();
rset = stmt.executeQuery ("select ename from emp");
}
catch(SQLException e) {
System.out.println("Can not create statement");
}
return temp;
public static void main(String[] args) throws Exception {
DBServer server = new DBServer();
Naming.rebind("DBServer",server);
}
}
=>원격객체의 메쏘들 호출하는 객체(Client)
import java.rmi.Naming;
import java.sql.*;
public class DBClient {
public static void main(String args[]) throws Exception {
if (args.length != 1)
throw new IllegalArgumentException("Syntax : DBClient <host name>");
RemoteDBServer server = (RemoteDBServer)Naming.lookup("rmi://"+args[0]+"/DBServer");
MyResultSet rset= server.getData();
while (rset.result.next ()) {
System.out.println (rset.result.getString (1));
}
}
}
=> 원격객체 호출시 나타나는 에러입니다.
C:\JavaExe>java DBClient localhost
Exception in thread "main" java.lang.NullPointerException
at DBClient.main(DBClient.java, Compiled Code)
C:\JavaExe>
==>
어찌해야 좋을지 자료를 계속 찾고 있는데 어렵군요.
염치없지만 이번에 부탁을 드려도 될지.