案例:have和message appln将部署到JBOSS 6.1.1服务器。对于不同的环境,具有不同的队列名称。有什么办法让队列名称和详细信息从配置文件而不是队列名称中读取


在注释中进行硬编码
在ejb-jar.xml中定义
在jboss Standalone.xml中引用


问候,
Sucheta

最佳答案

您可以将properties文件放在服务器的根目录中。在FileInputStream中访问它,并在您的MDB类中进行设置。
制作一个单例类并从该类中读取属性:

public class EnvironmentProperties {

    private static final EnvironmentProperties INSTANCE = new EnvironmentProperties();

    private Properties props = null;
    private Log log = LogFactory.getLog(EnvironmentProperties.class);

    private EnvironmentProperties() {
        loadProperties();
    }

    public static EnvironmentProperties getInstance() {
        return INSTANCE;
    }

    public String getJmsName() {
        return props.getProperty("jms.name");
    }

    public String getJmsQueue() {
        return props.getProperty("jms.queue");
    }

    private Object readResolve() {
        return INSTANCE;
    }

    private Properties loadProperties() {
        props = new Properties();
        try {
            String filePath = new File("./config.properties").getCanonicalPath();
            FileInputStream fis = new FileInputStream(filePath);
            props.load(fis);
            fis.close();
        } catch (FileNotFoundException e) {
            log.error(e.getMessage(),  e);
        } catch (IOException e) {
            log.error(e.getMessage(),  e);
        }
        return props;
    }

}


获得对jms /队列名称的访问权限:EnvironmentProperties.getInstance().getJmsName();

确保所有服务器上都存在properties文件

10-04 13:12