独立Java客户端如何获取Wildfly初始上下文?

时间:2015-11-04 01:25:36

标签: java java-ee wildfly wildfly-8

我找不到Java独立客户端从WildFly获取有效InitialContext的简单代码示例。它存在吗?

我放弃了Glassfish 4,因为Oracal永远不会修复它的JMS问题(我需要WildFly的背景的真正原因。现在我没有使用WildFly。

我确定一个简单的例子可以帮助很多新手使用WildFly。 (注意:没有从Enterprise容器获取WildFly的Context。从独立的Java客户端获取它 - 因此它可以实现JMS消息传递。)

这里的代码很简单,因为我知道如何制作它。

次要相关问题:如何杀死Derby不可用的警告。每个人都说它需要derbycleint.jar。 S0我把它(和derby-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