标签: sessioncontext

找出使用的EJB视图

假设我有一个定义两个视图的EJB:

  • 当地的商业,
  • 远程业务.

两个接口共享相同的方法签名,因此它类似于:

public interface MyBusinessCommon {
    void myMethod(Object o);
}

@Local
public interface MyBusinessLocal extends MyBusinessCommon { }

@Remote
public interface MyBusinessRemote extends MyBusinessCommon { }

@Stateless
public class MyBusinessBean implements MyBusinessLocal, MyBusinessRemote {
    public void myMethod(Object o) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法弄清楚EJB本身(或其拦截器?)内部调用的EJB视图?

假设我想根据使用的视图执行不同的授权程序.远程应该更加受限制,本地不应该.

我可以调用SessionContext#getInvokedBusinessInterface()但这只给了我关于类对象的信息 - 而不是关于它的EJB语义.明确地使用反射来检查接口或bean上的注释是否存在是不够的(在ejb-jar.xml?中定义的视图怎么样?)

我怀疑是否有可能使用直接的EJB规范,但也许我错过了一些东西.

如果没有,是否可以从应用程序服务器的内部获取此信息?(我们只考虑JBoss AS 7.x,Glassfish 3.x和TomEE 1.5.1).

ejb-jar.xml interceptor java-ee-6 ejb-3.1 sessioncontext

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

读取当前的NLS_NUMERIC_CHARACTERS会话设置

我必须使用不同的NLS_NUMERIC_CHARACTERSaka逗号分隔符在不同地区运行以数字小数作为参数的报告。

NLS_NUMERIC_CHARACTERS在会话级别设置,例如 与

ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.';
Run Code Online (Sandbox Code Playgroud)

表达式NLS_NUMERIC_CHARACTERS = ',.' 表示小数点标记是逗号,千位标记是点。

为了使用户在所有不同区域中都能正确输入内容,我假设NLS_NUMERIC_CHARACTERS正确设置了会话的设置。我想将该会话状态评估为一个字段值,s_nlsparam并使用它正确地将报告参数转换为

.. to_number(expr,format, v_nlsparam) ...
Run Code Online (Sandbox Code Playgroud)

到目前为止的计划。这将ORA-01722: invalid number在多国环境中遏制任何潜力。

现在,我找不到一种方法来读取设置的当前会话状态NLS_NUMERIC_CHARACTERS。我检查了该视图v$session,但没有提供任何此类字段。我都没有使用以下方法找到这样的参数:

select sys_context('USERENV', .... ) from dual
Run Code Online (Sandbox Code Playgroud)

有办法吗?

sql oracle sessioncontext

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