独立的rcp应用程序,访问安全的EJB,glassfish

时间:2012-02-23 21:20:44

标签: java-ee ejb eclipse-rcp glassfish-3

我想访问具有安全性的EJB .. 我正在开发一个eclipse rcp应用程序,我想要连接到glassfish 3.1.1服务器,该服务器有一些EJB安全,我想使用{{1}连接到EJB }}

我发现了这样的事情:

Java EE 6 security

我包含了来自glassfish appclient.jar ProgrammaticLogin pm = new ProgrammaticLogin(); pm.login(usernameText.getText(), passwordText.getText()); Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory"); props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl"); // optional. Defaults to localhost. Only needed if web server is running on a different host than the appserver props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost"); // optional. Defaults to 3700. Only needed if target orb port is not 3700. props.setProperty("org.omg.CORBA.ORBInitialPort", "3700"); try { Context ctx = new InitialContext(props); } catch (NamingException e) { e.printStackTrace(); } 的所有jar

示例错误:

glassfish3/glassfish/bin/package-appclient

您是否知道如何使用桌面应用程序的任何方法安全地登录SEVERE: SEC9050: Programmatic login failed com.sun.enterprise.security.auth.login.common.LoginException: javax.security.auth.login.LoginException: No LoginModules configured for default at com.sun.enterprise.security.auth.login.LoginContextDriver$9.run(LoginContextDriver.java:889) ...

我的推荐信:

  1. Java EE 6 tutorial - security
  2. Java-Tips: accessing a secure EJB from a client
  3. 如果你知道答案,那么,请你提供一些例子吗?

    提前谢谢!

2 个答案:

答案 0 :(得分:0)

看起来您的客户端应用程序缺少一些依赖的jar。

您缺少的课程如下:appserv-rt.jar

现在jar可能不会随Eclipse一起分发。检查过是否有Glassfish客户端库?

答案 1 :(得分:0)

您可以尝试在上下文初始化之后调用pm.login

我知道这个问题已经过时了,但在遇到同样的错误之后我偶然发现了它,并希望能够找到解决方案。

我的代码与以下内容相当:

ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);
container = EJBContainer.createEJBContainer(properties);

只需按照以下方式重新排序即可解决问题:

container = EJBContainer.createEJBContainer(properties);
ProgrammaticLogin pm = new ProgrammaticLogin();
pm.login(username, pass, "file", true);

至少在我理解我的情况下,这个想法是服务器/我与服务器的连接尚未初始化,因此无法处理登录。