温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java技术栈有什么特性

发布时间:2021-12-14 10:11:49 来源:亿速云 阅读:153 作者:iii 栏目:云计算

这篇文章主要讲解了“Java技术栈有什么特性”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java技术栈有什么特性”吧!

Java栈

War包在Tomcat或Jetty下的加载方式。

JAVA应用的经典交付形态是WAR包,在Docker下使用Tomcat或Jetty来进行WAR包的部署可以有两种方式:

1 . 将WAR包放到Docker镜像中:这种好处是产生的Docker镜像自包含,发布时不需要再发布独立的WAR包。Dockerfile例子如下:

FROM jetty:7.0

MAINTAINER xyz

ADD sample.* /usr/local/jetty/webapps/

这种方法的缺点是每次更新WAR包需要重新构建Docker镜像。

2. 将WAR包作为外部数据卷挂载:不将WAR包放在镜像里,这种方法的好处是每次WAR包更新,Docker镜像不需要更新。但是需要额外的WAR包发布机制。考虑到目前应该有WAR包发布机制,此方案可能更为灵活和熟悉。但这种方案的缺点就是Docker的可移植性受到损害,因为每个环境下必须要在宿主机的指定路径下有WAR包,使得Docker可以对其进行挂载。

JAVA发布的Sidecar模式

Caicloud的容器组的概念保证容器组中的容器可以做到:

  1. 任何时候都运行在同一个宿主机上

  2. 共享同样的外部挂载数据卷

这两个特性使得我们可以实现如下的sidecar模式:

Java技术栈有什么特性

这样取得了一箭双雕的好处:

  • 由于没有将应用程序的WAR包构建到Jetty容器中,使得应用的版本管理和Jetty等中间件的版本管理可以分开独立地进行。例如,如果Jetty的版本需要升级,我们不需要重新构建N个镜像(假设有N个不同的应用或WAR包)。

  • 另一方面,通过使用sidecar来“搬运”应用WAR包,我们又不用担心可移植性的问题:只要把app-sidecar容器和Jetty容器定义在一个容器组中,Caicloud会保证应用War会一直“跟着Jetty容器跑”。

在开发模式下使用Docker Jetty

上述使用War包的方法是将Docker作为软件发布的载体。有些时候开发者也会使用Docker作为本地开发的环境(在本地开发修改代码,同时在本地以Docker的形式运行当前代码)。此时需要注意的是,如果本地的代码文件是通过COPY或ADD加入到Docker镜像中,那么哪怕在Docker内使用mvn jetty:run, mvn也无法实时地反应本地文件、代码的变化。一个解决方法是通过挂载数据卷的方式来连接到本地的代码文件。

Docker Jetty模式下的日志

在非Docker模式下,Jetty的日志会根据Jetty的配置文件写到指定的位置,例如:/var/log/jetty。在Docker模式下,例如使用官方的Jetty镜像,这个日志文件会被完全取消,例如在Jetty 9.2.10的Dockerfile中:sed -i '/jetty-logging/d' etc/jetty.conf

这样,Jetty的日志会写到标准输出中从而被Docker或Caicloud平台进行统一的管理。

感谢各位的阅读,以上就是“Java技术栈有什么特性”的内容了,经过本文的学习后,相信大家对Java技术栈有什么特性这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI