java initial_什么是来自独立Java客户端的Payara InitialContext的环境属性

我放弃了GlassFish 4点任何有利于Payara41的事情。令人惊讶的是,GF有未解决的JDBC和JMS资源配置错误。看到:

Glassfish Admin Console throws java.lang.IllegalStateException when creating JDBC Pool

Payara完美地修复了JMS配置问题。所以我需要的是独立Java客户端获取InitialContext(env)来查找()这些资源所需的环境属性。

注意:InitalContext()不能在独立工作。只有在可以查找{Payara Home} / glassfish / lib / jndi-properties文件的EJB容器中。该文件有一个属性,所以这是我在我的代码如下:

Key:“java.naming.factory.initial”

值:“com.sun.enterprise.naming.impl.SerialInitContextFactory”

这引发了一系列的NoClassDerfinitionFound Exceptions,导致我将这些类的这些类添加到我的客户端的构建路径中,并添加到/ glassfish / lib /中。他们按照我遇到的顺序。

“glassfish-naming.jar”w /“com.sun.enterprise.naming.impl.SerialInitContextFactory”

“internal-api-3.1.2.jar”w /“org.glassfish.internal.api.Globals”

“hk2-api-2.1.46.jar”w /“org.glassfish.hk2.api.ServiceLocator”

将glassfish / lib中的“appserv-rt.jar”添加到客户端构建路径

但是现在我的代码为Globals.getDefaultHabitat()抛出java.lang.NoSuchMethodError。请注意,下面的例外不会被抓到我的catch块。 (而且我也没有在Payara的service.log中看到它。)

我知道我的客户端找到了Globals.class,因为添加它会导致ServiceLocator出现NoClassDefinitionFound。有两个“Globals.class”在那里......一个W /和一个W / O方法。或者,控制台输出中的“Lorg”与“org”真的不同,即是否有“Lorg / glassfish / hk2 / api / ServiceLocator”?

我卡住了。这似乎是一种面包和黄油类的需求 - 独立的Java客户端需要获得Payara的InitialContext的环境属性 - 这将是很高兴能够在这里添加它给大家使用(除了我的罐子已经找到了。)我很想看到Payara翱翔,因为我喜欢它的管理控制台,而不是JBoss和MayFly的XML定位。有什么建议么?我很难过。代码和控制台输出如下:

package org.america3.testclasses;

import java.util.Properties;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.naming.Context;

import javax.naming.InitialContext;

import org.america3.toolkit.U;

public class Test2 implements MessageListener {

static final Properties JNDI_PROPERTIES = new Properties() {

private static final long serialVersionUID = 1L;

{/*This property key:vlaue pair is specified in Payara41/glassfish/lib/jndi-properties*/

/*The class it calls for is in Payara41/glassfish/lib/glassfish-naming.jar*/

this.put ("java.naming.factory.initial","com.sun.enterprise.naming.impl.SerialInitContextFactory");}

};

//constructor

public Test2 () {

String iAmM = U.getIAmMShort(Thread.currentThread().getStackTrace());

System.out.println(iAmM + "beg");

try {

Context jndiContext = (Context) new InitialContext(JNDI_PROPERTIES);

} catch (Exception e) {

System.out.println(" " + iAmM + "InitialContext failed to instantiate");

System.out.println(" " + iAmM + "Exception : " + e.getClass().getName());

System.out.println(" " + iAmM + "e.getMessage(): " + e.getMessage());

System.out.println(" " + iAmM + "e.getMessage(): " + e.getCause());

e.printStackTrace();

}

System.out.println(iAmM + "end");

}

public static void main(String[] args) {

Test2 messageCenter = new Test2 ();

}

public void onMessage(Message arg0) {

// TODO Auto-generated method stub

}

}安慰

Test2. () beg

Exception in thread "main" java.lang.NoSuchMethodError: org.glassfish.internal.api.Globals.getDefaultHabitat()Lorg/glassfish/hk2/api/ServiceLocator;

at com.sun.enterprise.naming.impl.SerialInitContextFactory.(SerialInitContextFactory.java:126)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)

at java.lang.reflect.Constructor.newInstance(Unknown Source)

at java.lang.Class.newInstance(Unknown Source)

at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)

at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)

at javax.naming.InitialContext.init(Unknown Source)

at javax.naming.InitialContext.(Unknown Source)

at org.america3.testclasses.Test2.(Test2.java:24)

at org.america3.testclasses.Test2.main(Test2.java:36)PS:有足够积分的人可以在下面添加一个“Paraya”标签。我的意思是Glassfish的控制台在用来配置任何JNDI或JMS资源时抛出异常,我想很多人都会切换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值