应工作要求,今天要测试jndi中间件。我看了网上很多关于jndi的操作介绍,我主要写一下springboot,tomcat,jboss,weblogic,jetty五种容器下对jndi的支持。
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个记录,同时返回数据库连接建立所必须的信息。其实我不是特别懂这些描述,我的理解是一个数据库的配置,只要调用了这个名称,就可以自动链接到对应的数据库,进行操作。
话不多说,官方内容大家可以去这里看下http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html;
先说第一个springboot。我用的是springboot2.x版本
1、建立一个Springboot项目
2、添加JndiConfig.java(用来放置jndi配置)
url, username, password需要配置自己的,driverClassName如果6.0以下去掉cj.3、项目调用代码:
5、使用Springboot启动应用。
Demo代码地址:https://github.com/lunacai/canace-jndi-spring-demo
第二个tomcat
1、用Springboot新建tomcat项目
2、修改Tomcat安装目录下的%TOMCAT_HOME%/conf/context.xml文件,在<Context>...</Context>中间加入以下内容(注:非项目里面)
url, username, password需要配置自己的,driverClassName如果6.0以下去掉cj.3、项目中application.properties添加: spring.datasource.jndi-name=java:comp/env/jdbc/mysql
4、项目中代码调用:
5、启动的时候,使用tomcat启动应用。
Demo代码地址: https://github.com/lunacai/canace-jndi-tomcat-demo
第三个jboss,这个是一个折磨我很久的容器,最大的问题是jdk只支持1.7版本。
1、下载并启动jboss,我下载的是JBoss AS 7.1.0.CR1b;下载地址:https://jbossas.jboss.org/downloads/
(注意,jboss详细介绍地址:https://www.cnblogs.com/jaderoy/p/6744468.html)
2、写好jndi的应用,并且打成war包,将war包是放在JBoss AS 7.1.0.CR1b/standalone/deployments下面的
3、配置jboss里面的jndi
第一步:修改{jbosshomw}/standalone/configuration/standalone.xml文档,新增红框的内容
第二步:在modules/com下面新建mysql/main目录,然后在目录下新增文档module.xml和对应链接mysql的jar包
第三步:编辑第二步中新建的module.xml,对应path的jar就是你放在目录下的jar名称
4、新建Java工程,然后把Java工程变成maven。然后在pom中配置对应的依赖
用jboss启动包要达成war5、在工程的web.xml文件中新增(注:webapp/WEB-INF/web.xml需要自己新建)
6、建立链接数据源操作
7、调用外部接口代码:(注意:请求链接的拼凑方式是:curl -s 'http://localhost:8080/JBossServletDemo/?index=select')
错误信息1:
解决方法:用下载的jboss-modules-1.1.5.GA.jar替换原来主目录下的jboss-modules.jar并重名为jboss-modules.jarjboss-modules-1.1.5.GA.jar下载地址:http://www.java2s.com/Code/Jar/j/Downloadjbossmodules115gajar.htm
错误信息2:
切换jdk到1.7版本注意:jboss7需jdk1.7的的环境才能支持
mac电脑支持多个jdk切换,参考地址:https://www.cnblogs.com/wenrisheng/p/8079161.html
1、cd ~
2、open -e .bash_profile #打开.bash_profile文件,配置以下内容:
3、source .bash_profile #设置配置立即生效,验证结果如图:
错误信息3:
出现这个问题主要是配置不对,modules/com配置名称和standalone没对应错误信息4:
因为配置的mysql版本过高,jboss是jdk1.7支持的,所以mysql的版本也要用1.7的jdkdemo代码地址:https://github.com/lunacai/canace-jndi-jboss-demo
第四个weblogic
1、下载并且安装weblogic,下载地址:https://www.oracle.com/middleware/technologies/fusionmiddleware-downloads.html
(安装参考:https://blog.csdn.net/weixin_40102675/article/details/88180647,注意:weblogic 14的对应的JDK需要1.8,太高的会不支持)
2、启动weblogic(启动文件地址: /wls1411/user_projects/domains/base_domain/bin/startWeblogic.sh),打开网页:http://127.0.0.1:7001/console/login/LoginForm.jsp,配置jndi,配置链接如下:https://www.cnblogs.com/elfin/p/11424536.html(注意配置jndi时,记得测试下数据库的链接)
3、新建springboot项目,选择jdk1.8,打包war的web项目,代码配置:
jndi-name要和weblogic里面配置的一致4、启动的时候,使用Weblogic启动应用。
Demo代码地址:https://github.com/lunacai/canace-weblogic-jndi-demo
第五个jetty:
1、下载并且安装jetty;下载地址:https://www.eclipse.org/jetty/download.html(我下载的是.tgz)
2、启动根目标下的start.jar,查看是否安装正确
注意:如果遇到下面的问题,请重新下载新的包。。。
3、配置在jetty中配置jndi数据源,修改配置文件{jetty安装目录}/etc/jetty.xml,文件中添加内容:
4、添加内容之后在{jetty安装目录}/lib/ext目录下,添加需要用到的jar包,我这边使用的是c3p0,所以添加jar如图:(详细配置地址:https://www.eclipse.org/jetty/documentation/current/jndi-datasource-examples.html#mysql-pooled-datasource)
5、新建一个springboot项目,选择jdk1.8,打包war的web项目,代码配置:
其中web.xml添加以下内容,其他和上面配置差不多
6、Spring项目通过jetty本地启动。
网友评论