![ba285eef70660f7140819f691605afad.png](https://i-blog.csdnimg.cn/blog_migrate/7d3e4a7f73c5ca09d7fb5501f06d6e62.jpeg)
最近感觉在做项目,一千个客户就一个一千不一样要求。碰到一个客户,他们的数据在本地放着,但是要展示到我们系统中,但是他们也不想开接口(无奈),但是对方给了我们一台服务器。我们只有自己开发功能放在他们服务器了。
他们的服务器跟数据库是通的,但是以防客户随时变需求(一般肯定会变的),我们只有开发一个数据查询代理项目(dbagent),这样我们以后可以随便通过这个项目查询数据了。
为了功能安全,肯定要做密钥校验,dbagent的接口需要 sql,time,enc。dbagent添加密钥校验 time + sql +md5key 跟enc相等,time是为了时效性校验,如果超时不能查询,sql已经des加密,需要解密。
api项目调用agent接口查询数据,sql需要des加密。
![b3b02f32043034b952bde036a73f1888.png](https://i-blog.csdnimg.cn/blog_migrate/e7e4bb4a659347a39c3de3faa740ff4a.png)
开发完成需要本地部署,但是对方是win10服务器,需要编写启用脚本。
为了区别跟其他程序,java的启动程序需要定制下,在java_home/bin的java.exe重命名为agent
startup.bat脚本如下
@echo off
start agent -jar dbagent-0.0.1.jar > console.log
执行startup.bat脚本成功,接口能够正常访问,在任务管理器查看到agent进程。
为了方便启动程序,需要把脚本加入到服务中,
sc create agent binpath= "C:xxxxstartup.bat" start= auto
加入服务后,启动服务报错。
只有把startup.bat包装成exe,使用 WinSW,目录结构下结构如下agent.xml配置如下,放到服务器执行成功个,添加服务成功,ok搞定!
![0a6f8b64d96684e347e340a871c00105.png](https://i-blog.csdnimg.cn/blog_migrate/27ef12fc88790d52a9e796981c7ff9c4.png)
![fc4f34778a371bc14df93d908d62f75a.png](https://i-blog.csdnimg.cn/blog_migrate/0d445535f0c4d4876ef8b5eced8dc151.png)
![6aa4f28f35611f842d46509ffd271522.png](https://i-blog.csdnimg.cn/blog_migrate/bab24c128563b82eb87db0d629f6708a.png)
![7fe2b9abfeb30eed7ba7a8fd0b931e3d.png](https://i-blog.csdnimg.cn/blog_migrate/7cb1d5419b00edbcc21a044580a3fdbd.png)