RMI 에서 Serialization 을 어찌해야 좋을지...


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]

글쓴이 :조중현 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>


==>
어찌해야 좋을지 자료를 계속 찾고 있는데 어렵군요.
염치없지만 이번에 부탁을 드려도 될지.



다음 글들:



이어서 글올리기(답하기)

이름:
E-Mail:
제목:
내용:
HTML 태그 포함 여부: HTML 문서일 경우 체크
관련 URL(선택):
URL 제목(선택):
관련 이미지 URL:


[ 다음 글들 ] [ 이어서 글올리기(답하기) ] [ 자바 묻고 답하기 ]