摘要:本地编码时,我还是更倾向于搭配轻量级的进行开发,等上线再部署在上。这时遇到了问题,我们之前基于上数据源开发的一些工具包,在本地上运行不了。安装安装配置安装之前,需要先保证环境中已经安装配置了。
背景介绍
项目上成员已经开始使用Spring MVC或Spring Boot写后台接口,但是由于原有环境的一些限制,使得在实际开发时,会浪费很多时间在编程以外的事情上。
项目上使用的应用服务器是WebLogic,是一个功能很强大的重量级服务器。我们开发使用的IDE是IntelliJ IDEA,在本地编码阶段,如果搭配本地的WebLogic进行代码的调试、测试,是一件比较麻烦的事。首先本地运行一次要很长时间,而且DeBug模式很不稳定,这样很大大影响开发的效率。本地编码时,我还是更倾向于搭配轻量级的Tomcat进行开发,等上线再部署在WebLogic上。
这时遇到了问题,我们之前基于WebLogic上数据源开发的一些工具jar包,在本地Tomcat上运行不了。如果要解决这个问题,就免不了要修改一些环境配置。既然Tomcat是轻量级应用服务器,我们能不能把配置好环境的Tomcat放在云上,然后本地的IDE连接远程的Tomcat进行代码调试。甚至于我们开发团队内部都不用安装本地的Tomcat了,在编码阶段共用一个远程Tomcat服务器。
接下来,我们先解决问题,再实现想法。
安装Tomcat之前,需要先保证环境中已经安装配置了jdk。如果jdk已安装,可跳过该步骤。
下载安装包在Oracle的官网:http://www.oracle.com/technet... 下载对应的JDK包.当前我因为是64位的CentOS,所以下载的为 jdk-8u181-linux-x64.tar.gz。
我们可以将光标放置在该标红区域,右键复制下载链接,然后在linux服务器上使用 wget 下载到 /u01/install 目录
[root@Kerry install]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz安装jdk
#创建 /u01/java 目录 [root@Kerry install]# cd /u01/ [root@Kerry u01]# mkdir java [root@Kerry u01]# cp /u01/install/jdk-8u181-linux-x64.tar.gz /u01/java [root@Kerry u01]# cd /u01/java [root@Kerry java]# tar -zxvf jdk-8u181-linux-x64.tar.gz配置环境变量
[root@Kerry java]# vim /etc/profile
进入对 /etc/profile 文本的编辑模式。在最下面进行如下设置,其中 jdk需要改成自己对应的版本:
#set java enviroment JAVA_HOME=/u01/java/jdk1.8.0_181 JRE_HOME=/u01/java/jdk1.8.0_181/jre CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export JAVA_HOME JRE_HOME CLASS_PATH PATH
保存退出,然后编译该配置文件,进行验证
[root@Kerry java]# source /etc/profile [root@Kerry java]# java -version java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
说明安装成功
Tomcat安装 下载安装包在Tomcat官网http://tomcat.apache.org/ ,我下载的是Tomcat9。同样是找到需要下载的安装包,右键复制下载链接,然后使用 wget 下载。
[root@Kerry install]# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz安装Tomcat和验证
#将tomcat安装包解压在 /u01下,生成 apache-tomcat-9.0.12 文件夹 [root@Kerry install]# tar zxvf apache-tomcat-9.0.12.tar.gz -C /u01
开启和关闭Tomcat
#进入 bin/目录 [root@Kerry u01]# cd /u01/apache-tomcat-9.0.12/bin/ #开启 [root@Kerry bin]# ./startup.sh #关闭 [root@Kerry bin]# ./shutdown.sh
在服务器(10.1.11.70)上通过 ./startup.sh 开启Tomcat,默认分配的访问端口是8080
然后可以本地浏览器上访问 http://10.1.11.70:8080/ ,正常的话会出现熟悉的tomcat管理界面。如果本地访问不了,查看服务器上是不是没有开放该端口的流入权限。
我们需要在现有的Tomcat服务器上配置数据源 jdbc/DBUtilsDS。
# 修改 conf/server.xml文件,配置数据源 [root@ohsdev1 conf]# vim server.xml # 修改 conf/context.xml文件,配置数据源 [root@ohsdev1 conf]# vim context.xml #在server.xml和context.xml中加的数据源配置如下:
1、server.xml
2、context.xml
导入数据源依赖驱动在 lib 目录中导入数据源所依赖的驱动jar包,例如:
mysql(mysql-connector-java-5.0.8.jar)
oracle(ojdbc7.jar)
sql server(sqljdbc4.jar)
不同Tomcat或JDK的版本,对驱动jar包的版本也是有限制的,本次环境 Tomcat9+JDK1.8,我使用的就是Oracle连接驱动就是 ojdbc7.jar。
调用数据源(与WebLogic的区别)使用Spring boot写了测试的接口,Controller部分代码如下:
public class TestController { @RequestMapping(value = "/hello") public String hello(){ return "Hello!Spring boot!"; } @RequestMapping(value = "/name") public String name(){ String result="连接失败!"; try { InitialContext ctx = new InitialContext(); // DataSource ds = (DataSource) ctx.lookup("jdbc/DBUtilsDS"); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/DBUtilsDS"); Connection conn = ds.getConnection(); result="连接成功!"+conn; } catch (Exception e) { e.printStackTrace(); } // String result= DBUtil.invokeFunction("fnd_common_pkg.get_fnd_emp_displayname","u2000"); return result; }
本章中,我们配置的数据源是 jdbc/DBUtilsDS 。
如果要获取WebLogic环境中的该数据源,可以直接使用:lookup("jdbc/DBUtilsDS")
但如果要获取Tomcat环境中的该数据源,就要用:lookup("java:comp/env/jdbc/DBUtilsDS")。
Tomcat 访问数据源需要加 java:comp/env的前缀,因为Tomcat本身并不具备提供数据源的能力,它需要借助其他的开源数据源(如DBCP)类实现。
IDEA配置远程Tomcat 在IntelliJ IDEA上的配置1、创建 Tomcat Server(Remote)
2、配置 Ip、Port、Type,然后进入配置 Host的界面
3、新建一个服务器连接信息
4、配置服务器连接信息
5、选择刚刚创建的服务器连接配置,并配置staging
6、添加部署程序(推荐使用exploded)
根据以上配置点击“运行”,会报错连接不上 http://10.1.11.70:1099
我们在本地使用 telnet 10.1.11.70 1099 ,发现连接不上,这时发现服务器端的配置1099端口的进程并没有运行。
[root@ohsdev1 bin]# vi catalina.sh #加上以下配置 export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.1.11.70" export JAVA_OPTS="-Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
其中的1099号端口,你在配置前需要检查下,是否被占用,如果被占用,你需要换个其他端口(IDEA中监听的端口也要随着改变)。
如上,服务端的配置基本上就ok,现在需要启动了,之前,我们启动tomcat的脚本可能是startup.sh,现在我们需要远程部署,启动脚本是catalina.sh。
#在 /u03/apache-tomcat-9.0.12目录执行启动脚本 [root@ohsdev1 apache-tomcat-9.0.12]# bin/catalina.sh run #如果要关闭 bin/catalina.sh stop
结果返回日志,启动Tomcat成功。
验证远程部署本地浏览器访问 http://10.1.11.70:8080/ 可以查看到tomcat管理页面;
本地再使用 telnet 10.1.11.70 1099 ,此时可以访问;
本地IDEA 点击运行可以正常运行,连接到远程Tomcat。
访问 http://10.1.11.70:8080/springboot-demo/name 可以正常运行本地IDEA中的程序,通过jdbc/DBUtilsDS数据源访问数据库返回信息。
在/u03/apache-tomcat-9.0.12/logs 目录还可以查看Tomcat实时运行日志
[root@ohsdev1 logs]# tail -500f catalina.out配置远程调试
虽然上述可以做到,本地代码直接部署到远程Tomcat,但是对于日常开发来说,我们更希望能够支持在远程Tomcat上进行调试。
我们再打开之前在IDEA上配remote tomcat的地方,然后在选择下图Debug时自动生成如下信息,需要将该信息复制到远程服务器的catalina.sh文件中。但很明显远程服务器上是不存在D:IntelliJ_IDEAlibrtdebugger-agent.jar等
我们需要将下图中标红处的勾去除,然后再返回刚刚的Debug处,就没有了本地配置文件了。
现在,我们复制Debug生成的这串命令,在服务器上的 bin/catalina.sh文件中加上
CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,address=50839,suspend=n,server=y"
然后回到 bin 目录执行下列命令,开启tomcat和监听端口:
[root@ohsdev1 bin]# ./catalina.sh start
这时回到 IDEA ,点击Debug运行代码,等没问题后,在浏览器中访问http://10.1.11.70:8080/springbootDemo/name ,代码进入断点
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/35625.html
摘要:作为微服务的基础设施之一,背靠强大的生态社区,支撑技术体系。微服务实践为系列讲座,专题直播节,时长高达小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。 简介 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据,Java平台已成为全栈的生态体系,...
摘要:作为微服务的基础设施之一,背靠强大的生态社区,支撑技术体系。微服务实践为系列讲座,专题直播节,时长高达小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。 简介 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据,Java平台已成为全栈的生态体系,...
摘要:引入了新的环境和概要信息,是一种更揭秘与实战六消息队列篇掘金本文,讲解如何集成,实现消息队列。博客地址揭秘与实战二数据缓存篇掘金本文,讲解如何集成,实现缓存。 Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控 - 掘金Health 信息是从 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...
摘要:通过本文,我们将完成生产环境的搭建。第二步修改文件,增加支持数据源配置,添加目前只支持数据源的用户名和密码。另外,的集群需要个或个以上的节点,并且确保这三个节点之间是可以互相访问的。也可以故意的关闭某个实例,来验证集群是否还能正常服务。 前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》 《Spring Cloud Alibaba基础教...
摘要:通过本文,我们将完成生产环境的搭建。第二步修改文件,增加支持数据源配置,添加目前只支持数据源的用户名和密码。另外,的集群需要个或个以上的节点,并且确保这三个节点之间是可以互相访问的。也可以故意的关闭某个实例,来验证集群是否还能正常服务。 前情回顾: 《Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现》 《Spring Cloud Alibaba基础教...
阅读 2086·2023-04-25 23:15
阅读 1636·2021-11-22 09:34
阅读 1376·2021-11-15 11:39
阅读 670·2021-11-15 11:37
阅读 1985·2021-10-14 09:43
阅读 3339·2021-09-27 13:59
阅读 1392·2019-08-30 15:43
阅读 3290·2019-08-30 15:43