将Derby数据库与birt 集成到RCP

1.新建Derby数据库服务器启动程序,将derby相关jar包加入RCP包引用中,新建两个类如下:

package edu.zzuli.soft.studs.domain.common;

import java.io.PrintWriter;
import java.net.InetAddress;

import org.apache.derby.drda.NetworkServerControl;

public class DerbyNetworkServerUtil {
    private int portNum;
    private NetworkServerControl serverControl;
    private PrintWriter pw;

    public DerbyNetworkServerUtil(int port, PrintWriter pw) {

        this.portNum = port;
        this.pw = pw;
        try {
            serverControl = new NetworkServerControl(InetAddress
                    .getByName("localhost"), portNum);
            pw.println("Derby 网络服务器已创建");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * trace utility of server
     */
    public void trace(boolean onoff) {
        try {
            serverControl.trace(onoff);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Try to test for a connection Throws exception if unable to get a
     * connection
     */
    public void testForConnection() throws Exception {
        serverControl.ping();
    }

    /**
     * Shutdown the NetworkServer
     */
    public void shutdown() {
        try {
            serverControl.shutdown();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Start Derby Network server
     *
     */
    public void start() {
        try {
            serverControl.start(pw);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 

 

//DerbyNetworkServer在启用RCP程序中调用 ,这解释一下不用EmbededDerby,原因是内嵌模式只能有一个JVM连接数据库,在集成Birt的情况下不能应用 。所以应用网络模式,并且让RCP控制数据库的启动和关闭。

 

 

package edu.zzuli.soft.studs.domain.common;

import java.io.PrintWriter;

/**
 * derby数据库服务器
 *
 * @author 姚建忠
 *
 */
public class DerbyNetworkServer {
    private static int NETWORKSERVER_PORT = 1527;// 监听端口
    private DerbyNetworkServerUtil nwServer;

    public DerbyNetworkServer() {

    }

    public void startNetworkServer() {

        PrintWriter pw = null;

        try {
            pw = new PrintWriter(System.out, true);
            nwServer = new DerbyNetworkServerUtil(NETWORKSERVER_PORT, pw);
            nwServer.start();

            boolean knowIfServerUp = false;
            int numTimes = 5;

            // 测试服务器是否可以接受请求,测试延迟15秒
            while (!knowIfServerUp && (numTimes > 0)) {
                try {
                    numTimes--;
                    nwServer.testForConnection();
                    knowIfServerUp = true;
                } catch (Exception e) {
                    System.out.println("未能连接到Derby数据库服务器, 3秒后尝试重新请求连接...");
                    Thread.sleep(3000);
                }
            }
            if (!knowIfServerUp) {
                pw.println("连接失败,退出程序");
                System.exit(1);
            }

            pw.println("Derby数据库服务器已启动成功。");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (pw != null)
                pw.close();
        }

    }

    public void shutdownDerbyNetworkServer() {
        if (nwServer != null) {
            nwServer.shutdown();
        }
    }
}

 

好了,建工好这两个类后,只需在Eclipse RCP的IApplication实现类中的start和stop方法调用DerbyNetworkServer中的方法即可。

至于集成Birt到RCP,网上有很多资料,google一下吧,我不想写了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值