1. 利用CORBA实现数据的访问,也就是通过客户端的代码,访问服务器端的代码。首先是定义一个idl文件,里面的主要类型就是定义一个接口,类容如下:
2. 然后利用idlj –fall DataService.idl 命令来编译idl文件,编译后得到了许多的java文件,文件如下所示:
再然后,在该文件中建立一个Server文件夹,然后将生成的文件放入,并且建立一个java功能,作为服务器端,这里要求从数据库读取数据,所以我们写了一个DBManager类来实现与数据库的连接,以及插入、查询功能:里面的代码如下:
importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.SQLException; publicclass DBManager { private static String user ="root"; private static String pass ="962464"; private static String className="com.mysql.jdbc.Driver"; private static String url ="jdbc:mysql://localhost:3306/students"; private static Connection conn; private static java.sql.Statement state; public static void init() { try { Class.forName(className); conn =DriverManager.getConnection(url,user,pass); state =conn.createStatement(); } catch (ClassNotFoundException e) { // TODO Auto-generated catchblock e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catchblock e.printStackTrace(); } } public static void CreateTable(){ String sql = "create tablestuScore ( num char(20) Primary key,score double);"; try { state.execute(sql); } catch (SQLException e) { e.printStackTrace(); } } public static void insert(String num,doublescore) { String sql = "insert intostuScore values("+"'"+num+"',"+score+");"; try { state.execute(sql); } catch (SQLException e) { // TODO Auto-generated catchblock e.printStackTrace(); } } public static double select(String num) { String sql = "select score from stuScore where num= '"+num+"';"; double result= 0; try { ResultSet rs =state.executeQuery(sql); while(rs.next()) { result = rs.getDouble("score"); } } catch (SQLException e) { // TODO Auto-generated catchblock e.printStackTrace(); } return result; } }
3. 然后就是编写服务器端的代码,在服务器端里面有一个类实现定一个的接口里面的代码如下:
class DataServiceImpl extends DataServicePOA { private ORB orb ; private studentScore s =new studentScore(); publicvoid setorb(ORB orb) { this.orb = orb; } @Override publicvoid insert(String num, double score) { DBManager.insert(num, score); } @Override publicdouble select(String num) { return DBManager.select(num); } @Override publicvoid selectAll() { // TODO Auto-generatedmethod stub } }
这样服务器端提供的功能都实现了,然后在服务端创建服务对象并将其向 ORB 注册这样服务端的代码就写好了。
4. 下面就是写客户端的代码,和前面一个将生成的文件加入到客户端文件中,然后编写一个客户端文件,主要是实现数据初始化,并且连接服务程序,这里面需要输入IOR码,并且必须和服务器端产生的一样,这样才能得到服务端的服务,得到服务对象之后就是对服务端的方法的调用实现数据的插入和查询操作。
5. 下面就将运行的过程演示一遍:
首先是启动服务端:
然后就是运行客户端:
等待用户输入IOR码.(是由服务器端产生的),然后输入IOR码:
然后就是根据数字选择操作开始调用方法了,我们随便来演示几个:
插入成功,然后我们查询一下看看是不是正确的:
然后为了保证是正确的我们再去数据库中看看:
数据库中也有我们插入的数据,说明是正确的。
这样我们就完成了java开发CORBA的过程。