我无法找到Java独立客户端从WildFly获取有效InitialContext的代码的简单示例。它存在吗?独立Java客户端如何获取Wildfly初始上下文?
我放弃了在Glassfish 4,因为了Oracal永远不会修复它的JMS问题(真正的原因,我需要WildFly的语境。现在,我没有与WildFly。
我相信一个简单的例子就是有很大的帮助(注意:没有从Enterprise容器获取WildFly的上下文,从独立的Java客户端获取 - 因此它可以实现JMS消息传递。)
这里的代码很微不足道,因为我知道如何
次要相关问题:如何杀死Derby不可用的警告大家都说它需要derbycleint.jar。 S0我把这个(和德比driver.jar)字面上无处不在。仍然收到警告。
主要问题:我找不到新的IntialContext(env)所需的一组属性。它似乎需要某种安全证书。我只是无法找到从哪里开始寻找和阅读来弄清楚我需要做什么。任何帮助? (我想找到简单的代码这样的作品,因为它肯定会帮助其他新手WildFly上手,即使添加JMS部分,因为Glassfish的是出来的图片为的。)
CODE:
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
*/
}
CONSOLE:
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}
CONSOLE 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
CONSOLE 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
这个例子有帮助吗? https://github.com/wildfly/quickstart/blob/10.x/helloworld-jms/src/main/java/org/jboss/as/quickstarts/jms/HelloWorldJMSClient.java –