我正在尝试将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;
}
}
答案 0 :(得分:0)
这是ClassNotFoundException的例外情况。有关解决方案,请参阅wiki。
答案 1 :(得分:0)
添加对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