java - 常量和注解

标签 java

这可能是一个愚蠢的问题,因为缺少对 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(单元名=sel) 1 个错误

最佳答案

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

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

关于java - 常量和注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510319/

相关文章:

java - 两个Java进程之间的快速通信

JavaEE 项目部署失败

java - 如何检测tomcat连接池问题

java - SimpleDateFormat 用于类似 RFC 的时间戳?

java - 如何在java中单击按钮时显示组合框?

java - DynamoDB - DynamoDBMapper 查询并获取整个结果集

java - 检查鼠标是否在圆圈内

java - 您好,我尝试将数据库中的字符串值转换为 int,但没有发生

java - Jboss 或 Tomcat

java - 日期在java中将dd-MMM-yyyy转换为dd-MM-yyyy