- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 ejb 在 TomEE 7.0.3 服务器上运行。顺便说一句,所有这些都在 Tomee 1.7.4 中运行。我使用 tomcat-users.xml 文件设置了一组用户
<tomcat-users>
<role rolename="admin" />
<role rolename="admin-gui" />
<role rolename="admin-script" />
<role rolename="manager" />
<role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-jmx" />
<role rolename="manager-status" />
<role rolename="tomee-admin" />
<user
name="admin"
password="admin"
roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status,tomee-admin" />
<role rolename="tomcat" />
<user
name="tomcat"
password="tomcat"
roles="tomcat" />
<user
name="manager"
password="manager"
roles="manager" />
</tomcat-users>
我能够访问网址http://127.0.0.1/tomee/ejb通过提供用户“admin”的凭据。我的 server.xml 文件具有以下条目
<Resource auth="Container" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"
pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
和
<Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI resources
under the key "UserDatabase". Any edits that are performed against this UserDatabase
are immediately available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
问题是当我尝试远程调用 ejb 时,我的 JNDI InitialContext 使用以下属性。
java.naming.factory.initial=org.apache.openejb.client.RemoteInitialContextFactory
java.naming.provider.url=http://127.0.0.1:8082/tomee/ejb
java.naming.security.principal=admin
java.naming.security.credentials=admin
以下是调用ejb的代码。
public static Object locateService(String serviceName) throws NamingException, IOException {
InputStream in = ServiceLocator.class.getClassLoader().getResourceAsStream("servicelocator.properties");
Properties p = new Properties();
p.load(in);
InitialContext ctx = new InitialContext(p);
return ctx.lookup("PaymentManagerRemote");
}
如您所见,我提供了正确的用户名和密码,但出现以下异常
Apr 27, 2017 12:39:07 PM org.apache.openejb.client.EventLogger log
INFO: RemoteInitialContextCreated{providerUri=http://127.0.0.1:8082/tomee/ejb}
Exception in thread "main" javax.naming.AuthenticationException: Error while communicating with server: ; nested exception is:
javax.naming.AuthenticationException
at org.apache.openejb.client.JNDIContext.authenticate(JNDIContext.java:381)
at org.apache.openejb.client.JNDIContext.getInitialContext(JNDIContext.java:289)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:684)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216)
at co.uk.meghdoot.core.util.ServiceLocator.locateService(ServiceLocator.java:20)
at co.uk.meghdoot.core.test.DeviceLocationTest.setUp(DeviceLocationTest.java:53)
at co.uk.meghdoot.core.test.DeviceLocationTest.main(DeviceLocationTest.java:109)
有人能解释一下吗?
最佳答案
使用 tomcat-users.xml 假设您在 server.xml 中使用 UserDatabaseRealm 作为领域,但情况可能并非如此(您的问题中未写)。这还假设身份验证是通过 servlet/tomcat 主干完成的。默认情况下情况并非如此,直到您添加到 tomee webapp(您可以物理创建它并定义 ejbd servlet - 请参阅 http://tomee.apache.org/ejbd-transport.html - 执行 request.login() 的过滤器。
使用ejbd协议(protocol)的tomee将自动使用tomee安全服务登录,该安全服务默认依赖于server.xml的第一个领域。
关于java - 为什么在 TomEE 上远程调用 EJB 时会收到 AuthenticationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43658309/
我想在 TomEE 中测试 hikaricp。我已将 jar 文件添加到我的 lib 文件夹中,并尝试像这样定义资源: .... 当我这样做时,我在启动时收到以下错误: org.apache.xb
平台:TomEE Web 配置文件 1.5.0。 我正在尝试做一件非常基本的事情,为 MySQL 设置数据源。我已经阅读了官方指南(http://openejb.apache.org/configur
我最近在“Red Hat Enterprise Linux Server (6.6)”上安装了“apache-tomee-webprofile-1.7.2”。 我可以通过访问 x.x.x.x:8080
如何在 IntelliJ IDEA VM 选项中进行设置。 我需要设置 set JAVA_OPTS="-Dtomee.serialization.class.whitelist=" set CATAL
正如标题所说。我对 Java EE6 认证的内部工作原理了解不多。但是,TomEE+ 似乎只是 TomEE 的超集,所以 TomEE+ 不应该也通过 Java EE6 认证吗? 我们刚刚决定为我们内部
我正在使用 Apache TomEE(本地主机上的 apache-tomee-plus-1.5.2)处理一些 JEE 网络应用程序,并尝试从 TomEE 主页上的链接访问这些服务。 现在,我记得早些时
尝试在 Windows 上启动 TomEE 时出现以下错误: SEVERE: OpenEJBContextConfig.processAnnotationsFile: failed. java.uti
我的服务器有 48 个 CPU,在 TomEE+ 7.0.2 上托管 Java EE 7 REST API。 一些 API 在运行并行算法时需要使用尽可能多的 CPU。 并行化部分不需要任何数据库或其
所以我试图找到任何引用文档或使用这三个的重要示例。 我发现的“最好的”是: TomEE/OpenEJB JAXRS refactoring Some tips for TomEE andJAXRS c
我正在 TomEE 8 中运行我的应用程序。我想从我的数据库中读取一些属性并将其传递给应用程序。 我看到了 https://rmannibucau.wordpress.com/2014/08/06/t
我正在使用单个 TomEE 实例来部署 2 个 Web 应用程序。两个应用程序使用不同的数据库和不同的实体。 应用程序 2 集成到应用程序 1 中,因此我在运行时随时需要这两个架构。 我在 tomee
假设我有一个包含 persistence.xml 配置和 jpa 实体的 jar。我希望在不同的应用程序之间共享相同的持久性单元。 例如,部署一个 war 应用程序并注入(inject)相同的持久性单
规范:jdk1.8,TOMEE702,win10 问题:为 open-ejb3.X 安装和使用 TOMEE 的方法/内容/哪个? 网址:http://tomee.apache.org/download
我下载并安装了 TomEE 1.7.1。在启动服务器时抛出 IllegalArgumentException。 可能是什么问题,因为我还没有部署任何应用程序。 INFO: Using 'openejb
我有一个关于 TomEE 和使用 tomee.xml 中指定的数据源的奇怪问题。值得注意的是,我使用的是 Netbeans、TomEE 和 MySQL。在 Ubuntu 13.04(Xubuntu 最
无法部署应用程序,但出现异常 java.lang.Exception:持久性单元:持久性 -750441533localhost:未找到名称“openejb/PersistenceUnit/persi
我已经编写了代码,以便可以在不重新启动服务器的情况下更改 EntityManagerFactory 属性。我使用 RESTful Jersey 服务对其进行了测试。 我应该编写junit测试来测试这个
我想将 war 文件部署到 TomEE 但失败了: 原因: javax.naming.NameNotFoundException: Name openejb/Resource/applic
我在 Eclipse 中工作。我已经添加了一个启动良好的 TomEE 服务器,但似乎在创建 MySQL 数据源时出现问题。 我在 TomEE 1.7.2 中定义了以下数据源: jdbcDri
我们正在尝试从 GlassFish 迁移到 TomEE,但是在 TomEE 上部署自定义资源适配器时遇到了问题。在 GlassFish 上,只需部署 RAR 文件、配置资源适配器配置,仅此而已。我们如
我是一名优秀的程序员,十分优秀!