【发布时间】:2015-11-04 01:25:35
【问题描述】:
我找不到 Java 独立客户端从 WildFly 获取有效 InitialContext 的简单代码示例。存在吗?
我放弃了 Glassfish 4,因为 Oracal 永远不会解决它的 JMS 问题(我需要 WildFly 的 Context 的真正原因。现在我在 WildFly 上失败了。
我相信一个简单的例子会帮助很多刚接触 WildFly 的人。 (注意:不是从企业容器中获取 WildFly 的上下文。从独立的 Java 客户端获取它——这样它就可以实现 JMS 消息传递。)
这是我所知道的最简单的代码。
次要相关问题:如何取消 Derby 不可用警告。每个人都说它需要 derbycleint.jar。 S0 我把它(和 derby-driver.jar)放在任何地方。仍然收到警告。
主要问题:我找不到 new IntialContext (env) 所需的一组属性。它似乎需要某种安全凭证。我只是找不到从哪里开始寻找和阅读以弄清楚我需要做什么。有什么帮助吗? (我想找到有效的简单代码,因为它肯定会帮助其他 WildFly 新手入门。甚至添加 JMS 部分,因为 Glassfish 不适合这样做。)
代码:
package org.america3.wildfly.jms;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.sun.messaging.ConnectionFactory;
public class JMSSendAndReceive {
static Hashtable<String, String> jndiProperties = new Hashtable<String,String>() {
private static final long serialVersionUID = 1L;
{
put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
/*after posting I added these properties*/
put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
/*That produced CONSOLE 2 below for new result -- DERBY is gone!
I think all that's needed is to get
org.jboss.naming.remote.client.InitialContextFactory
into the Eclipse build path.
No luck. That led to adding addtional classes
... see commments below.
They led to CONSOLE 3 output that offers no hope at all.
I give up. Can anyone help?
*/
}
};
static public void main (String[] args) {
System.out.println("AS_DERBY_INSTALL: " + System.getenv("AS_DERBY_INSTALL"));
System.out.println("JAVA_HOME: " + System.getenv("JAVA_HOME"));
try {
final Context context = new InitialContext(jndiProperties);
ConnectionFactory factory = (ConnectionFactory) context.lookup("java:comp/DefaultJMSConnectionFactory");
System.out.println(factory);
} catch (Exception e) {
System.out.println("Try Failed");
System.out.println(e.getClass().getName());
System.out.println(e.getMessage());
}
}
/*
* derbyclient.jar and derby-driver.jar are stored in these files:
* <WILDFLY_HOME>\standalone\deployments
* <WILDFLY_HOME>\standalone\deployments\lib
* C:\Program Files\Java\jdk1.8.0_05\lib
* C:\Program Files\Java\jdk1.8.0_05\jre\lib
*
* The entire Derby API and derby-driver.jar are also added to the Eclipse
* build path for this class.
*
* Adding these to Eclipse build produced CONSOLE 3
* <WILDFLY_HOME>\modules\system\layers\base\org\jboss\remote-naming\main\jboss-remote-naming-2.0.4.Final.jar
* <WILDFLY_HOME>\modules\system\layers\base\org\jboss\xnio\main\xnio-api-3.3.1.Final.jar
* <WILDFLY_HOME>\modules\system\layers\base\org\jboss\remoting\main\jboss-remoting-4.0.9.Final.jar
* <WILDFLY_HOME>\\modules\system\layers\base\org\jboss\ejb-client\main\jboss-ejb-client-2.1.1.Final.jar
*/
/*
*Tracked these down
*/
}
控制台:
AS_DERBY_INSTALL: D:\Bulletproof\bpDerby
JAVA_HOME: C:\Program Files\Java\jdk1.8.0_05
Nov 03, 2015 2:40:35 PM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
org.omg.CORBA.COMM_FAILURE: FINE: 00410001: Connection failure: socketType: IIOP_CLEAR_TEXT; hostname: localhost; port: 3700 vmcid: OMG minor code: 1 completed: No
at com.sun.proxy.$Proxy20.connectFailure(Unknown Source)
at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:253)
at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:276)
at com.sun.corba.ee.impl.transport.ContactInfoImpl.createConnection(ContactInfoImpl.java:129)
at com.sun.corba.ee.impl.protocol.ClientRequestDispatcherImpl.beginRequest(ClientRequestDispatcherImpl.java:242)
at com.sun.corba.ee.impl.protocol.ClientDelegateImpl.request(ClientDelegateImpl.java:220)
at com.sun.corba.ee.impl.protocol.ClientDelegateImpl.is_a(ClientDelegateImpl.java:378)
at org.omg.CORBA.portable.ObjectImpl._is_a(Unknown Source)
at org.omg.CosNaming.NamingContextHelper.narrow(Unknown Source)
at com.sun.enterprise.naming.impl.SerialContext$ProviderCacheKey.getNameService(SerialContext.java:1205)
at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:393)
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:329)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:477)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.sun.enterprise.connectors.jms.system.DefaultJMSConnectionFactory.handle(DefaultJMSConnectionFactory.java:83)
at com.sun.enterprise.naming.impl.NamedNamingObjectManager.tryNamedProxies(NamedNamingObjectManager.java:134)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:164)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.america3.wildfly.jms.JMSSendAndReceive.main(JMSSendAndReceive.java:25)
Caused by: java.lang.RuntimeException: java.net.ConnectException: Connection refused: connect
at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:344)
at com.sun.corba.ee.impl.transport.ConnectionImpl.<init>(ConnectionImpl.java:250)
... 20 more
Caused by: java.net.ConnectException: Connection refused: connect
at sun.nio.ch.Net.connect0(Native Method)
at sun.nio.ch.Net.connect(Unknown Source)
at sun.nio.ch.Net.connect(Unknown Source)
at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
at com.sun.corba.ee.impl.misc.ORBUtility.openSocketChannel(ORBUtility.java:110)
at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSocket(IIOPSSLSocketFactory.java:329)
... 21 more
Try Failed
javax.naming.NamingException
Lookup failed for 'java:comp/DefaultJMSConnectionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
控制台 2:
AS_DERBY_INSTALL: D:\Bulletproof\bpDerby
JAVA_HOME: C:\Program Files\Java\jdk1.8.0_05
Try Failed
javax.naming.NoInitialContextException
Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory
控制台 3:
AS_DERBY_INSTALL: D:\Bulletproof\bpDerby
JAVA_HOME: C:\Program Files\Java\jdk1.8.0_05
Nov 03, 2015 4:11:12 PM org.xnio.Xnio <clinit>
INFO: XNIO version 3.3.1.Final
Try Failed
javax.naming.NamingException
Failed to create remoting connection
【问题讨论】:
标签: java jakarta-ee wildfly wildfly-8