glassfish 命名中未找到 SerialInitContextFactory

2023-12-12

这开始让我彻底发疯......

我想使用 Maven 创建一个 Glassfish 客户端应用程序。

为此,我添加了所需的 gf-client 依赖项:

    <dependency>
        <groupId>org.glassfish.appclient</groupId>
        <artifactId>gf-client</artifactId>
        <version>3.1</version>
        <type>pom</type>
        <scope>compile</scope>
    </dependency>

然后,想要联系在同一应用程序上运行的 Glassfish 服务器,我会进行常规查找:

Properties p = new Properties();
// optional. Defaults to localhost. Only needed if web server is running
// on a different host than the appserver
p.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
// optional. Defaults to 3700. Only needed if target orb port is not
// 3700.
p.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
Context context = new InitialContext(p);
// Stores the list of reachable EJBs
return context.lookup(interfacesToNames.getProperty(className));

不幸的是,当这样做时,我得到的只是

Caused by: javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.impl.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com/sun/enterprise/naming/impl/SerialInitContextFactory]
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:307)
        at javax.naming.InitialContext.init(InitialContext.java:242)
        at javax.naming.InitialContext.<init>(InitialContext.java:216)
        ... 6 more
Caused by: java.lang.ClassNotFoundException: com/sun/enterprise/naming/impl/SerialInitContextFactory
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:63)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:671)
        ... 9 more

经过一番检查后,我注意到我的glassfish-naming-3.1.jar存在于该客户端应用程序的 CLASSPATH 中。并且,根据 Eclipse 代码查找,这个 jar 应该包含com.sun.enterprise.naming.impl.SerialInitContextFactory。但是,如果在调试模式下,我会这样做getClass().getClassLoader().getResource("com/sun/enterprise/naming/impl/SerialInitContextFactory")它返回 null,这清楚地表明找不到该类。

有关更多信息,JAR 是使用此插件配置从我的本地 Maven 存储库复制的:

        <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>package output directory</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <prependGroupId>true</prependGroupId>
                        <includeScope>compile</includeScope>
                        <outputDirectory>${dependencies.outputDir}/jars</outputDirectory>
                        <prefix>${dependencies.outputDir}</prefix>
                    </configuration>
                </execution>
            </executions>
        </plugin>

此外,我必须承认,当使用相同的 API 连接到 Glassfish 服务器运行简单测试时,绝对没有问题,这将我引向了 ClassLoader 问题。

运行该客户端时,当前的类加载器是(如getClass().getClassLoader().getClass().getName()) sun.misc.Launcher$AppClassLoader。不幸的是,这与运行单元测试时完全相同。

那么,我能做些什么来解决这个错误呢?

EDIT类存在于glassfish-naming-3.1.jar,但标准类加载器似乎找不到。

EDIT一个有趣的发现:

getClass().getClassLoader().getResource("com/sun/enterprise/naming/impl") = jar:file:/C:/Users/pouet/pouet/target/jars/glassfish-naming-3.1.jar!/com/sun/enterprise/naming/impl

while

getClass().getClassLoader().getResource("com/sun/enterprise/naming/impl/SerialInitContextFactory") = null

由于我不完全理解的原因,在应用程序中运行时有一个配置的上下文类加载器。这个类加载器似乎使用某种 OSGi 命名限制。

因此,为了避免该错误,我重置了上下文类加载器:

Thread.currentThread().setContextClassLoader(getClass().getClassLoader());

它起作用了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glassfish 命名中未找到 SerialInitContextFactory 的相关文章

  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 如何实现仅当可用内存较低时才将数据交换到磁盘的写缓存

    我想将应用程序生成的数据缓存在内存中 但如果内存变得稀缺 我想将数据交换到磁盘 理想情况下 我希望虚拟机通知它需要内存并将我的数据写入磁盘并以这种方式释放一些内存 但我没有看到任何方法以通知我的方式将自己挂接到虚拟机中before an O
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 是否可以创建一个更改 about:config 设置的 Firefox WebExtension?如何?

    我想创建一个 WebExtension 为其中的某些设置提供切换按钮about config e g permissions default image 在 WebExtensions 中可以做到这一点吗 如果有 API 是什么 我相信这个
  • 如何观察NSScroller的变化?

    我有一个NSScrollView子类 我想更新另一个NSView基于当前滚动位置 我尝试了 KVC 观察value of self horizontalScroller 但这永远不会被调用 In awakeFromNib self hori
  • 在shiny中动态添加模块

    这与使用 renderUI 创建模块无关 据我了解 使用 renderUI 您可以在 UI 函数中放置一个占位符 然后在服务器函数中编写控件 小部件 模块分为两部分 您必须使用 callModule 将一部分添加到 UI 函数 将另一部分添
  • 使用多个签名重写 C++ 虚拟方法 [重复]

    这个问题在这里已经有答案了 我有一个 C 基类 它声明一个具有两个不同签名的虚拟方法 一旦我重写派生类中的虚拟方法签名之一 编译器 g 4 6 3 和 g 4 7 就不再能够将该方法与同一派生类中的第二个签名相匹配 如果我只将 SPECIA
  • 在 CSS 网格布局中,我们是否从隐式网格线开始计算跨度?

    这个问题是关于 CSS 网格是否 跨度计数 它是否应该从隐式网格线开始 在CSS 权威指南 第 4 版 第 14 页695 据说 box4 是事情真正变得有趣的地方 它结束于第五行线 即第二条隐式网格线 它跨越了三行 然而 它仍然从与 bo
  • PHP文件在模态窗口内上传

    我已经在互联网上搜索了好几天 但没有运气 我需要一个模式窗口来上传文件并将附加值传递给脚本 当用户单击 这是问题 时 需要打开模式窗口 以下是我当前的脚本 任何帮助或指导将不胜感激
  • 不允许加载本地资源:file:///

    我的项目中名为 幻灯片 的文件夹中有一些图像 我正在尝试访问这些图像 但它给了我以下错误 Not allowed to load local resource file C xampp htdocs MyProject Slides 123
  • Xcode 4 - 如何获取 .app 文件?

    我安装了 Xcode 4 它有非常酷的功能 我使用 Xcode 4 开发了我的新应用程序 现在将其交给客户进行测试 问题是我无法在查找器中获取 app 文件 在产品类别下 当我选择 app 文件并右键单击它时 没有 在查找器中显示 选项 我
  • django-debug-toolbar 通过相对路径查找资产?

    我正在尝试让 django debug toolbar 正常工作 在遵循所有说明后 我收到以下错误 05 Sep 2012 15 33 35 GET profile edit HTTP 1 1 200 43647 05 Sep 2012 1
  • 当覆盖层打开时暂停 Flexslider

    我们目前正在开发一个利用 Flexslider 插件 最近被 Woo Themes 收购 的项目 我们在此页面上有多个弹出窗口 我们希望滑块在弹出窗口处于活动状态时暂停 并在弹出窗口关闭时恢复 暂停仅在第一轮有效 恢复滑块不起作用 下面是我
  • 带参数和数组的对象

    C 中是否有一种方法可以在对象上添加参数 并使用数组 例如 int x 1 int y 2 Object myObject x y 5 does not work 我希望我可以将参数放入对象中 同时创建 5 个这样的对象的数组 有人知道怎么
  • 将 Tidymodels 进程映射到列表/分组依据或嵌套

    我真的很喜欢 tidymodels 但我不清楚如何将该模型工作流程适合于嵌套分组之类的东西 例如 tidyr 在 mtcars 的气缸等物体上勾勒出一个简单的嵌套 然后为每个气缸拟合一个独特的线性调节模型 我正在尝试基于圆柱体之类的东西来拟
  • Vba 代码在工作簿打开后停止。没有错误

    我有一些代码旨在打开 xlsm 工作簿 从中复制一些数据并将其与代码一起粘贴到工作簿中 两个工作簿均受密码保护 代码也受密码保护 我有一些代码设置为在保存 打开和关闭之前运行 从而锁定工作簿 所以问题是 在通过 vba 打开工作簿后 代码停
  • 在 BlackBerry 中创建自定义布局

    我想在屏幕的下半部分创建一个 RichTextField 同时在屏幕的上半部分绘制自己的自定义图形 这在黑莓手机中可能吗 它尝试定义 LayoutManager 并尝试将 RichTextField 定位在屏幕底部 但 RichTextFi
  • 为什么JVM可以自行从OOM Java堆空间中恢复

    Integer data new Integer 1000000 100000 如上面的简单演示代码 我尝试在 pandora 容器 它是阿里巴巴开发的 Web 容器 如 tomcat 中申请显着的大内存并触发 OOM 但似乎此错误仅影响当
  • 如何切换“使用自动配置脚本”

    WhoIsRich 发布了一个很棒的脚本来切换自动检测设置 你能告诉我如何设置使用自动配置脚本吗 原文发布于Windows 注册表中的哪个键禁用 IE 连接参数 自动检测设置 To set reg add HKCU Software Mic
  • [::-1] 在 python 中意味着什么 - 切片?

    我有一个变量a range 0 5 我需要知道why and how a 1 这有效 我得到的答案是range 4 1 1 感谢帮助 P S 这是一个非常基本的问题 但由于这个问题是以非常结构化的方式回答的 我尝试编辑这个问题并使其更加普遍
  • 在云托管上部署 Laravel 5.1

    我在 wamp 上开发了我的 laravel 应用程序 终于搞定了 租了一台带有CPanel接口的云托管服务器 我将所有文件上传到公共 html 上并尝试访问该网站 它应该进入登录页面但不起作用 我曾经部署经典的 html 文件 这是我第一
  • 单个字符的标签样式

    我需要更改此标签中一个字符的颜色 特别是 这需要对几个部分进行更改 但对其他许多部分则不需要更改 有没有一种内联方式可以让我做到这一点 td td
  • glassfish 命名中未找到 SerialInitContextFactory

    这开始让我彻底发疯 我想使用 Maven 创建一个 Glassfish 客户端应用程序 为此 我添加了所需的 gf client 依赖项