【问题标题】:Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory in Three Tier Architecture无法实例化类:三层架构中的 org.jboss.naming.remote.client.InitialContextFactory
【发布时间】:2013-05-31 06:54:04
【问题描述】:

我正在尝试将 jboss 7.1.1 final 与三层架构方法连接起来,将连接逻辑保留在我的业务层中,并从我的表示层访问这个业务层。但它引发了以下异常

Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory.

如果我将 jboss 连接逻辑保留在同一表示层中,它工作正常。

以下是我的业务逻辑代码。

public static void Connect()
    {
        try
        {
            javax.naming.Context context = null;
            ConnectionFactory connectionFactory;
            Connection connection;
            Session session;
            String topicName = "jms/topic/TestedTopic";
            Destination dest = null;
            MessageConsumer consumer = null;
            TextListener listener = null;
            java.util.Properties jndiProps = new java.util.Properties();
            jndiProps.put(Context.__Fields.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
            jndiProps.put(Context.__Fields.PROVIDER_URL, "remote://10.1.7.149:4447");
            jndiProps.put(Context.__Fields.SECURITY_PRINCIPAL, "admin");
            jndiProps.put(Context.__Fields.SECURITY_CREDENTIALS, "admin123");
            jndiProps.put("jboss.naming.client.ejb.context", true);


            context = new InitialContext(jndiProps);


            connectionFactory = (ConnectionFactory)context.lookup("jms/RemoteConnectionFactory");
            connection = connectionFactory.createConnection();
            dest = (Destination)context.lookup(topicName);
            session = connection.createSession(false, Session.__Fields.AUTO_ACKNOWLEDGE);
            consumer = session.createConsumer(dest);

            listener = new TextListener();
            consumer.setMessageListener(listener);
            connection.start();
        }
        catch (Exception)
        {

            //throw;
        }
    }

【问题讨论】:

    标签: java .net jboss7.x ikvm


    【解决方案1】:

    这是ClassNotFoundException 的例外情况。请参阅wiki 获取解决方案。

    【讨论】:

    • 我检查了是否缺少任何东西,但它很好,因为它在单个程序集中运行,但问题是当我尝试将整个逻辑组合到一个程序集中并尝试将此打包的程序集添加到其他程序集中时.
    【解决方案2】:

    添加对 Visual Studio 的引用不会在编译输出中添加引用。只有当你使用一个类 在您的代码中而不是通过反射添加引用。

    有 3 个选项: 最好的办法是使用完全限定的 .NET 类名。这也包括 dll 名称。

    或者你像http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=ClassLoader那样使用BootClassPathAssemby

    或者您使用 dll 中的一个类文件并使用 AppDomainAssemblyClassLoader。详情在http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=ClassLoader

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 2023-03-25
      • 2013-06-06
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多