假设表相同。
struts环境或jsp/servlet/javabean环境
有时候会存在子公司数据库服务器没有启动的情况(这个时候配置struts-config.xml好象要出错?)

解决方案 »

  1.   

    对了,tomcat配置就不用说,我主要关心的是struts-config.xml中配置的话,在对方服务器没有启动的情况下报错怎么办?
    或则就是自己编写javabean来连接的情况下怎么处理?
      

  2.   

    jihanzhong(逍遥) 
    在对方服务器启动了情况下,不会报错,在对方服务器没有启动的情况下,会报错,我想知道是否这个是在struts-config.xml中配置的时候都会有的情况?另:在struts-config.xml中配置数据源的情况下,报错我如何提示错误信息?我现在的使用情况是:
    本来我最开始的时候不想使用struts-config.xml的,自己建立了一个dbbean.java来连接集团公司的总部服务器,后来需求中要求要到子公司服务器中去获取数据,然后我想到了struts-config.xml,结果发现我新添加一个数据源配置后报错。
      

  3.   

    不是在具体使用的时候出错,而是tomcat启动的时候就直接出错了。(对方数据库服务器启动就正常,没启动就报错。)具体使用的时候出错我知道如何提示出错信息
      

  4.   

    我仅仅是配置了一下,完全还没有使用到那个在struts-config.xml中配置的数据源就已经报错了
      

  5.   

    自己写一个多好啊!做一个DataCollecter!从配置的数据源中取数据!如果某一个数据源失败的话就不取!取出来的数据自己随意怎么处理!
      

  6.   

    chendequan(陈德全)
    主要是我没有做过多个数据源的情况,原有的bean里面直接嵌入了连接信息,甚至我的实体bean里面都有对dbbean的实例化,所以现在感觉上有点难过,不知道如何处理了。
      

  7.   

    你说的应该是跨SITE的问题吧,我们公司是这样解决的,在.net架构下,用remoting,webservice,java则运用rmi,webservice,还有mq的方式来做
      

  8.   

    你只要根据已有的DbBean重新设计一个Adapter来适配你现在的应用!然后你在做一个DataCollector然后从你设计的Adapter中组合你的数据,如果某个Adapter中无法读取数据或抛出异常!你可以认为此数据源已经失败,不做处理!但是肯定是要对你的现有的代码进行更改了!建议读Design Pattern和Refactor to Pattern!
      

  9.   

    给你一个最笨的方法,这是我以前在与你想同的问题的情况下的处理方法。
    你原有的bean不是直接嵌入了连接信息么?
    你只需要把你原来嵌入连接信息的地方替换为去读取properties文件中的内容就可。(struts中有这个东东,应该知道的)
    不过会有一个由此产生的麻烦事情,就是你在程序刚开始的时候,需要去读一次总公司数据库的properties文件(main.properties),而每次去操作子公司数据库的时候,都需要去读相应的子公司数据库的properties文件(sub1.properties),操作完后又需要将重新读回总公司数据库的properties文件(main.properties)。给出读取properties文件的bean:
    PropertiesReader.javapackage net.xxxxx.common.db;//这个自己改import java.io.FileInputStream;
    import java.util.Properties;public class PropertiesReader {
      protected static Properties props = new Properties();  public static void init(String fileName) throws Exception {
        FileInputStream fis = new FileInputStream(fileName);
        props.load(fis);
      }  public static String getProperty(String key) {
        return props.getProperty(key);
      }  public static String getProperty(String key, String def) {
        return props.getProperty(key, def);
      }
    }程序开始的时候:
      String filename = application.getRealPath("/"+"WEB-INF/datasource/main.properties");//总公司数据库
      net.xxxxx.common.db.PropertiesReader.init(filename);需要子公司数据的时候:
      String filename = application.getRealPath("/"+"WEB-INF/datasource/sub1.properties");//子公司数据库
      net.xxxxx.common.db.PropertiesReader.init(filename);
      {......}//操作子公司数据库
      filename = application.getRealPath("/"+"WEB-INF/datasource/main.properties");//返回总公司数据库
      net.sharewin.common.db.PropertiesReader.init(filename);   假设你原有dbbean中嵌入的连接信息为:
      driverClass = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
      URL = "jdbc:microsoft:sqlserver://192.168.0.1:1433;DatabaseName=mybase";
      userName = "sa";
      password = "sa";
      Class.forName(driverClass).newInstance();
      conn = DriverManager.getConnection(URL, userName, password);修改后的dbbean中相应地方为:
      driverClass = PropertiesReader.getProperty("DRIVE_CLASS");
      URL = PropertiesReader.getProperty("URL");
      userName = PropertiesReader.getProperty("USERNAME");
      password = PropertiesReader.getProperty("PASSWORD");
      Class.forName(driverClass).newInstance();
      conn = DriverManager.getConnection(URL, userName, password);main.properties:
    DRIVE_CLASS=com.microsoft.jdbc.sqlserver.SQLServerDriver
    URL=jdbc:microsoft:sqlserver://192.168.0.1:1433;DatabaseName=mybase
    USERNAME=sa
    PASSWORD=sasub1.properties:
    DRIVE_CLASS=com.microsoft.jdbc.sqlserver.SQLServerDriver
    URL=jdbc:microsoft:sqlserver://192.168.0.2:1433;DatabaseName=mybase
    USERNAME=sa
    PASSWORD=sa
      

  10.   

    把所有数据源的相关属性,放入一个全局的MAP内