±Û¾´ÀÌ :Á¶ÁßÇö 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>
==>
¾îÂîÇØ¾ß ÁÁÀ»Áö ÀڷḦ °è¼Ó ã°í Àִµ¥ ¾î·Æ±º¿ä.
¿°Ä¡¾øÁö¸¸ À̹ø¿¡ ºÎŹÀ» µå·Áµµ µÉÁö.