大家好,今天小编关注到一个比较有意思的话题,就是关于java应用服务器的问题,于是小编就整理了3个相关介绍java应用服务器的解答,让我们一起看看吧。
WEB容器工作原理
市面上的java web容器常见的有两种,一种是jetty,一种是tomcat。要想用java实现web容器,首先要知道其工作原理。
以Tomcat为例,我们通常开发出来的war包,会放在tomcat中的webapp下面,tomcat会自动解压war包。解压完成后,其实就是一个servlet应用!换句话说,我们写的war包中的servlet应用只需要关注业务层面的,处理http等网络链接的事情交给都交给tomcat了, 一个请求到达tomcat的流程如下图:
所以其实我们也可以手写一个web容器,只要能接收请求并转发给相应的servlet请求即可。
整体结构大致如下
1、写一个处理网络请求连接请求实体类、一个和网络请求连接响应实体类
2、写一个容器主类,包括启动监听端口等
国内中小型游戏公司大部分都是使用Java作为服务器开发语言,主要有以下几个原因:1,成本低(相对于C++来说成本要低很多)2,Java开发人员多,比较容易招聘(我们公司游戏服务器端是使用的C++,在人员招聘上就遇到了很大的问题,很难能招聘到比较合适的C++做游戏服务器开发的人员)3,Java相对于服务器方面比较成熟的框架比较多,开发速度上有很明显的优势。4,跨平台,可以部署在任何服务器上面。5,维护方面。
目前常见的所谓java 编译代码加密基本都是可破解加密,并不能真正的实现加密,因为java是开源的,使用密码加密必然存在运行时解密,只是增加了下解密难度而已,时间只有足够都是可以破译掉的。要么就修改jdk和jre底层技术,但是难度相当大。但是目前常用针对防止反编译还是有比较不错的方法的。此处不讨论加密狗、远程访问授权等加密方法,已经有人介绍过了,不再赘述,而且针对单机简单的部署并不好用,也不能让客户觉着我做个程序你还担心我反编译你的代码而使用加密狗。现在介绍两类个人觉着还行的方法。
一.运行时输入密码,密码隐藏不显示,也不记录到日志的方法
比如码云就有人贡献工具针对此方法:
https://gitee.com/roseboy/classfinal
主要支持三种模式 1.无密码模式 2.机器绑定 3.启动加密后的jar ,有意向的可以跳进链接看使用方法.
二.代码混淆技术
Allatori混淆技术,支持命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。新版本支持war和ear文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 此类混淆技术本人实际项目中正式测试验证比较不错,反编译后代码基本很难反推,甚至许多类文件反编译后为方法内容为空,效果很不错。
再有就是ProGuard等其它混淆技术,网上有很多教程可以查阅后抉择使用。
常见的做法是一个加密狗 插在服务器上面,还有一种就是发放一个授权码,这个授权码是绑定机器码的,在程序启动的时候根据授权码来识别是不是当前服务器,如果不是则程序全部不可访问
到此,以上就是小编对于java应用服务器的问题就介绍到这了,希望介绍关于java应用服务器的3点解答对大家有用。
2024-10-17 14:07:25
2024-10-17 13:00:35
2024-10-17 11:14:15
2024-10-17 10:11:12
2024-10-17 07:23:39
大家好,今天小编关注到一个比较有意思的话题,就是关于主机cpu屏幕的问题,于是小…
大家好,今天小编关注到一个比较有意思的话题,就是关于虚拟机debian安装教程的…