小编rus*_*key的帖子

Java EE 6注入抽象类

在我正在研究的Java EE 6项目中,有一个用@EJB注释的单独字段没有被注入.注射在其他地方工作正常.

作为Java EE的新手,我不知道它是否与抽象类中的字段有关,也不能从Glassfish(3.1.2)中找到关于为什么没有发生这种注入的任何输出.

在发生NullPointerException之前,服务器日志中没有错误或警告,因为dataSourceControl字段为null.我已经验证了DataSourceControl Singleton是通过在其构造函数中放入日志来实例化的.

据我所知,dataSourceControl字段没有被注入,但是日志没有给我这么做的理由.

public abstract class AbstractDataMap<T> {
  @EJB
  private DataSourceControl dataSourceControl; // This is not being injected

  DataSourceControl getDataSourceControl() {
    return dataSourceControl;
  }
  // Other methods
}

public abstract class AbstractDataMapDBProd<T> extends AbstractDataMap<T> {
  @Override
  protected Connection getDBConnection() {
    return getDataSourceControl().getConnectionX(); // NullPointerException here
  }
  // Other methods
}

@Stateless
public class CountryMap extends AbstractDataMapDBProd<Country> {
  public boolean update(final Country current, final Country legacy) {
    Connection connection = getDBConnection();
    // More code 'n stuff …
Run Code Online (Sandbox Code Playgroud)

glassfish java-ee ejb-3.1

8
推荐指数
1
解决办法
1万
查看次数

ORDER BY是否会影响返回SELECT查询的行数?

我正在经历规范可怕的遗留数据库的痛苦,并且发现了我认为DBMS的一个错误.

此查询返回我期望的结果:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_id, thing_name;
(16 rows)
Run Code Online (Sandbox Code Playgroud)

我第一次运行查询时,无意中在ORDER BY中使用了错误的列,如下所示:

SELECT DISTINCT RIGHT(SQUEEZE(thing_id), 2) AS thing_id, TRIM(thing_name)
FROM thing
ORDER BY thing_name, location;
(33 rows)
Run Code Online (Sandbox Code Playgroud)

请注意,唯一要更改的是ORDER BY,并且返回的行数从16增加到33.它提供的结果不是查询指定的DISTINCT.

我相信这是一个彻头彻尾的错误,但是同事说这是正常的,因为当我们通过"位置"进行排序时,会在结果中选择一个无形的.

ORDER BY是否会影响SELECT查询中返回的行数?

编辑:我有另一个人查看查询,我将查询复制到两个单独的文件,然后对它们运行diff命令.100%确定两个查询之间的唯一区别是ORDER BY中列出的列.

更新:Ingres已发布修补程序14301,其中包含错误修正:"错误126640(GENERIC)查询具有order-by表达式,而不同聚合返回的行数超出预期.order-by表达式中的列不在选择列表中."

即有问题的查询现在会导致错误,因为结果不正确.

sql ingres

5
推荐指数
2
解决办法
1043
查看次数

命令在命令行上运行,但在批处理文件中失败

尝试在批处理文件中设置Glassfish配置时,有一个命令在直接从命令行运行时有效 - 但在放入Windows批处理文件时失败.

命令:

call asadmin.bat create-auth-realm --classname com.sun.enterprise.security.auth.realm.ldap.LDAPRealm --property jaas-context="ldapRealm":directory="ldap\://domain.com\:389:base-dn=dc\=domain,dc\=com:group-base-dn=ou\=Groups,ou\=domain,dc\=com":search-bind-dn="CN\=username,OU\=Accounts,OU\=domain,DC\=com":search-bind-password="password":search-filter="(&(objectCategory\=user)(sAMAccountName\=%s))":group-search-filter="(&(objectCategory\=group)(member\=%d))" a-realm
Run Code Online (Sandbox Code Playgroud)

完全按照上面的命令行运行时,响应完成:

Command create-auth-realm executed successfully.
Run Code Online (Sandbox Code Playgroud)

完全按照上面的方式从批处理文件运行时,响应失败:

(member\ was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

请注意,某些等于字符的转义是针对Glassfish的,而不是尝试转义Windows批处理命令的字符.

我的猜测是,当在批处理文件中运行时,批处理文件将某些字符视为特殊字符.我试着逃避括号,没有运气.

该命令如何在批处理文件中工作!?

windows glassfish batch-file

1
推荐指数
1
解决办法
1711
查看次数

标签 统计

glassfish ×2

batch-file ×1

ejb-3.1 ×1

ingres ×1

java-ee ×1

sql ×1

windows ×1