常量和注释

2023-12-28

这可能是一个愚蠢的问题,因为缺少对 java 的一些理解,但我有这段代码:

@Stateless
@WebService
public class MLHRequesterBean implements MLHRequesterBeanRemote {

    private final static String sel = "MLHRequesterPU" + (isProduction()? " " : "-dev");

    public static boolean isProduction(){
        try {
           if (Inet4Address.getLocalHost().getHostName().equalsIgnoreCase("ironman")) {
                return true;
            }
        } catch (UnknownHostException ex) {}
        return false;
    }

    @PersistenceContext(unitName=sel)
    ...

为什么 sel 不被视为常数?我们有测试服务器和生产服务器,每个服务器都应该写入不同的数据库。我怎样才能克服这个问题?

这是错误:

C:\projects\workspace\MLHRequester\MLHRequester-ejb\src\java\mlh\MLHRequesterBean.java:33:属性值必须是常量 @PersistenceContext(unitName=sel) 1 个错误


sel 是一个最终静态变量,但它的值是在此类第一次加载时计算的。这@annotations在编译时评估,因此会出现错误。

您最好在构建期间执行诸如宏/替换预处理步骤之类的操作来生成正确的值(可能基于 .properties 文件)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常量和注释 的相关文章

随机推荐