1、对于jnp包的使用,jboss5中使用jnp,实现类是org.jnp.interfaces.NamingContextFactory,需要引 入jnp-client.jar。在AS7中客户端只需要引入一个jboss-client.jar的包使用的 java.naming.factory.initial改成了这个包下面的 org.jboss.naming.remote.client.InitialContextFactory。
jboss5下面的initialContext的实例化方法是
Properties prop = new Properties();
prop.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
prop.put("java.naming.provider.url","localhost:1099")
prop.put("java.naming.factory.url.pkgs","org.jboss.naming")
jboss7中改成了
Properties prop = new Properties();
prop.put(Context.PROVIDER_URL, "remote://127.0.0.1:4447");
prop.put(Context.SECURITY_PRINCIPAL, System.getProperty("username","appname"));
prop.put(Context.SECURITY_CREDENTIALS, System.getProperty("password","12345"));
prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
否则会抛出Caused by: java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
2、注意到上面那个remote:127.0.0.1:4447,没有使用5.1里默认的localhost:1099,因为这个localhost和 127.0.0.1的区别访问不到JNDI,搞了好半天,这个banding IP可以在standalone/configration/standalone.xml文件里<integerface>配置
否则抛出
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at ClientTest.main(ClientTest.java:27)
Caused by: java.lang.RuntimeException: Operation failed with status WAITING
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:89)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 5 more
3、用户名密码,在jboss7里必须使用用户名和密码的验证,而且需要自己添加一个用户,一般用add-user.bat添加,选择Application User
Realm输入默认的ApplicationRealm
最后输入一行what roles do you want this user to belong to?
这里的输入与standalone.xml的内容匹配。我的项目是用到guest的
否则抛出
javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException:javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:36)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:121)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.InitialContext.<init>(InitialContext.java:197)
at ClientTest.main(ClientTest.java:27)
Caused by: java.lang.RuntimeException: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.naming.remote.protocol.IoFutureHelper.get(IoFutureHelper.java:87)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:56)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateCachedNamingStore(InitialContextFactory.java:166)
at org.jboss.naming.remote.client.InitialContextFactory.getOrCreateNamingStore(InitialContextFactory.java:139)
at org.jboss.naming.remote.client.InitialContextFactory.getInitialContext(InitialContextFactory.java:104)
... 5 more
Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:365)
at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:214)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:189)
at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:103)
at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:72)
at org.xnio.nio.NioHandle.run(NioHandle.java:90)
at org.xnio.nio.WorkerThread.run(WorkerThread.java:184)
at ...asynchronous invocation...(Unknown Source)
at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:270)
at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:251)
at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:349)
at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:333)
at org.jboss.naming.remote.client.EndpointCache$EndpointWrapper.connect(EndpointCache.java:105)
at org.jboss.naming.remote.client.NamingStoreCache.getRemoteNamingStore(NamingStoreCache.java:55)
... 8 more
4、jndi命名,JBoss7使用了更加严格的JNDI命名比如 JMS的jms-connection-factories使用的是java:jboss/exported/jms /RemoteConnectionFactory而不是以前的/RemoteConnectionFactory我以为是 initialcontext.lookup的时候查找的内容是java:jboss/exported/jms /RemoteConnectionFactory,试了几次发现错了,应该是配置文件中的命名为java:jboss/exported/jms /RemoteConnectionFactory查找的时候用jms/RemoteConnectionFactory。同理查找Queue的时候在 standalone.xml中配置
<jms-destinations>
<jms-queue name="myQueue">
<entry name="java:jboss/exported/queue/MyQueue"/>
</jms-queue>
<jms-queue name="SyslogQueue">
<entry name="java:jboss/exported/queue/SYSLOG"/>
</jms-queue>
<jms-queue name="TrapQueue">
<entry name="java:jboss/exported/queue/TRAP"/>
</jms-queue>
<jms-queue name="ICMPPingQueue">
<entry name="java:jboss/exported/queue/ICMPPING"/>
</jms-queue>
</jms-destinations>
查找的时候用initialcontext.lookup("queue/MyQueue");
否则抛出
javax.naming.NameNotFoundException: jms/RemoteConnectionFactory -- service jboss.naming.context.java.jboss.exported.jms.RemoteConnectionFactory
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:97)
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:178)
at org.jboss.naming.remote.protocol.v1.Protocol$1.handleServerMessage(Protocol.java:127)
at org.jboss.naming.remote.protocol.v1.RemoteNamingServerV1$MessageReciever$1.run(RemoteNamingServerV1.java:73)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
ps:发现一个问题上面说的第四点 我理解错了,我原来以为entry name="XXX/XXX"就是用来查找的所以把原来的<entry name="queue/SYSLOG"/>直接改成了<entry name="java:jboss/exported/queue/SYSLOG"/>然后启动时候没有报错但是会有几行提示信息
10:05:54,884 INFO [org.hornetq.ra.inflow.HornetQActivation] (default-short-running-threads-threads - 3) Attempting to reconnect org.hornetq.ra.inflow.HornetQActivationSpec(ra=org.hornetq.ra.HornetQResourceAdapter@175c39c3 destination=queue/ICMPPING destinationType=javax.jms.Queue ack=Auto-acknowledge durable=false clientID=null user=null maxSession=15)
10:05:54,900 INFO [org.hornetq.ra.inflow.HornetQActivation] (default-short-running-threads-threads - 2) Attempting to reconnect org.hornetq.ra.inflow.HornetQActivationSpec(ra=org.hornetq.ra.HornetQResourceAdapter@175c39c3 destination=queue/SYSLOG destinationType=javax.jms.Queue ack=Auto-acknowledge durable=false clientID=null user=null maxSession=15)
10:05:54,900 INFO [org.hornetq.ra.inflow.HornetQActivation] (default-short-running-threads-threads - 3) awaiting topic/queue creation queue/ICMPPING
原来系统是根据entry name="XXX/XXX"来创建Queue的 所以entry name="XXX/XXX"(也就是<entry name="queue/SYSLOG">是不能去掉滴,否则提示找不到对应的Queue)要保留。
相关推荐
在IT领域,特别是Java应用服务器环境下,JBoss与MySQL数据库的集成是常见需求之一,而JNDI(Java Naming and Directory Interface)在此过程中扮演着关键角色。本文将深入解析如何在JBoss中配置MySQL的JNDI数据源,...
【JBoss AS7教程】 JBoss Application Server 7(简称JBoss AS7)是Red Hat公司推出的一款开源Java EE应用服务器,它基于EAP(Enterprise Application Platform)的轻量级版本,提供了对Java EE 6规范的全面支持。...
### JBoss AS 7 Development #### 一、概述 JBoss AS 7(Application Server 7)是一款功能强大且开放源代码的应用服务器,为开发者提供了高效稳定的开发平台,支持多种高级特性,包括EJB(Enterprise JavaBeans)...
### JBoss AS7 文档概览 JBoss AS7(Application Server 7)是JBoss社区推出的一款开源应用服务器,其文档提供了全面且详细的指南、教程及资源介绍,旨在帮助开发者和管理员更好地理解和掌握JBoss AS7的各项功能与...
### JBoss AS 7 简介与特点 JBoss AS 7(Application Server 7)是JBoss系列中的一个重要版本,它标志着JBoss AS在技术架构上的一次重大革新。本文将详细介绍JBoss AS 7的历史背景、设计初衷、核心技术和内部结构,...
[Packt Publishing] JBoss AS 7 配置部署管理教程 (英文版) [Packt Publishing] JBoss AS 7 Configuration, Deployment and Administration (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构...
### JBoss AS7 开发指南知识点总结 #### 一、JBoss AS7 开发者指南概览 **标题**: “JBoss AS7 开发指南” **描述**: “这是 JBoss AS7 最新版的开发指南,对于希望深入了解 JBoss 应用服务器的开发者来说,这是...
Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理 本文主要介绍了如何使用 Nginx 1.2.1 和 JBOSS AS 7 实现负载均衡和 Session 处理。文章首先介绍了使用 Nginx 1.2.1 和 JBOSS AS 7 做为应用服务器的理由,然后...
JBoss AS 7 是一款开源的应用服务器,由 Red Hat 公司开发,它提供了一个高效且灵活的平台来运行Java应用程序。在这个版本中,JBoss 引入了命令行接口 (CLI) 作为管理和部署应用的主要工具,以提高管理效率和自动化...
### JBoss AS 5 Development: 关键知识点解析 #### 一、JBoss AS 5 概述 **JBoss AS 5(Application Server 5)**是JBoss组织推出的一款开源应用服务器,它为Java应用程序提供了强大的运行环境。JBoss AS 5在企业...
【JBoss配置JNDI详解】 在Java应用服务器中,JNDI(Java Naming and Directory Interface)是一个关键组件,用于查找和绑定资源,如数据源、EJB等。JBoss,作为一款开源的企业级应用服务器,对JNDI的支持使得开发者...
《JBoss安装与JNDI配置详解》 JBoss,作为一个开源的应用服务器,广泛应用于Java EE应用程序的部署和管理。本文将详细介绍JBoss的安装过程以及JNDI(Java Naming and Directory Interface)的配置,旨在帮助开发者...
【JBoss AS7 性能调优】 JBoss Application Server 7 (JBoss AS7) 是一款开源的应用服务器,以其高效能和快速启动而受到赞誉。然而,为了确保最佳性能,对服务器进行适当的配置和调优至关重要。大约80%的应用性能取...
[Packt Publishing] JBoss AS 7 开发教程 (英文版) [Packt Publishing] JBoss AS 7 Development (E-Book) ☆ 出版信息:☆ [作者信息] Francesco Marchioni [出版机构] Packt Publishing [出版日期] 2013年06月...
jboss 配置jndi数据源,deploy下配置oracle-ds.xml
【JBOSS7 + EJB3详解】 JBOSS7是Red Hat公司开发的一款开源Java应用服务器,它基于Java EE 6(Enterprise JavaBeans 3.1)规范,提供了全面的中间件服务,包括Servlet、JSP、JSF、EJB、JMS等。EJB3是Java EE平台中...
Windows 环境下 JBoss AS 7 配置 HTTPS 在 Windows 环境下,配置 JBoss AS 7 的 HTTPS 需要按照特定的步骤进行。下面将详细介绍配置 HTTPS 的过程。 生成服务器端证书文件 首先,需要使用 JDK 自带的工具制作 ...
本篇将详细介绍如何在MyEclipse中远程调试JBoss AS7或JBoss EAP6,无论是在Windows还是Linux环境下。 首先,我们需要了解远程调试的基本原理。远程调试通常依赖于Java的调试接口(Java Debug Wire Protocol, JDWP)...