java ssm项目 如何在项目启动时 建立一个socket链接。并在项目中可以随时调用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ssm项目 如何在项目启动时 建立一个socket链接。并在项目中可以随时调用相关的知识,希望对你有一定的参考价值。
我们是做一个代理服务器 给手机端提供服务,接收到手机端请求后 我们需要通过socket 向socket服务器获取数据 然后处理后在返回给手机端 。
我打算是这样的 :项目启动,开启socket并链接上socket服务器,然后开启一个线程 sss,监听返回的数据。--当手机端请求过来后 开启线程aaa 调用socket输出流 发送命令,aaa等待阻塞, 当socket服务器返回数据后 sss获取到数据 将数据处理后 将数据传给aaa aaa返回给客户端 线程结束 。
请问有没有类似的例子 或者 别的思路什么的 ?
你的问题的重点是项目启动时创建socket,只要socket创建成功就能通过tcp或udp协议进行访问了。如何项目启动时创建可以有2种方法:
创建一个继承了ServletContextListener接口的类,在contextInitialized方法里建立socket server端
新建一个Servlet,并设置<load-on-startup>0</load-on-startup>,在service方法里建立socket server端。
使用idea+gradle建立SSM项目
目录: 一、创建一个gradle项目
二 、在gradle中创建SSM项目
一 、创建一个gradle项目
第一步:
打开我们的IDEA工具,选择创建一个新项目
第二步:这里会让你选择创建一个什么项目,idea会根据选择的不同从而创建不同的项目目录和初始文件,此处我们选择gradle,并选中web,然后点击Next进入下一步。
这里要介绍一下gradle,gradle是一个开源的项目自动化构建工具,和maven功能类似,默认也是使用maven的仓库。具体细节此处不做赘述。
第三步:此处会要求输入GroupID和ArtifacID。Next
GroupId就是maven和gradle添加依赖时需要填写的Group,在简历maven项目的时候也会要求填写
ArtifactId也是maven中需要填写的
Version也是,新建的项目默认1.0就好
第四步:选择gradle,IDEA默认有gradle,可以不用选择,如果需要使用自己安装的gradle,那么选择"Use local gradle distribution",然后选择gradle的安装路径
(PS:建议要有一个自己安装的版本,如果在加载其他gradle项目的时候选择默认版本,会导致idea去下载该项目之前开发所使用的版本,而数据源是在国外,可能会极慢。)
第五步:"Project location"是项目生成的路径,项目会被生成到这个路径下面,这里直接点击"Finish"完成
这里是gradle在进行首次构建,为项目创建初始目录等,此处如果没有选择使用自己安装的gradle则可能自动下载,根据网络情况需要等待的时间不一(也有可能会一直等待,所以建议提前安装自己的gradle)。
构建完成之后的目录结构如下
gradle项目的建立到这里结束,其中有一个bulid.gradle文件,这个文件是用来添加包依赖的,和maven的pom.xml作用一样
二 、在gradle中创建SSM项目
第一步:为项目设置Tomcat服务器
Name这里输入Tomcat的命名(这个随便是什么,你喜欢就好),然后在"Application server"处选择Tomcat的安装路径,
然后Tomcat的端口号等,这里默认8080,然后点击"Deployment"。
添加需要使用这个Tomcat发布的Artifact
这里选择带"(exploded)"后缀的,带exploded后缀在打war包以后是可以直接打开看war内的内容的,而另一个不行(如果我没记错的话,记错了不要喷我)。
上一步结束后会来到这里,这里设置访问项目的URL,填"/"就是是用默认的访问地址,IP:端口。
举个例子,如果填/demo,按照上面配置的地址,localhost:8080,则访问时应该是http://localhost:8080/demo作为整个后端接口url的前缀
到这里Tomcat就设置好了。
第二步:在gradle中添加SSM所依赖的jar包,打开bulid.gradle文件,在
dependencies{
}
中将以下代码贴入其中。
compile ‘log4j:log4j:1.2.17‘
compile ‘org.slf4j:slf4j-api:1.7.25‘
compile ‘org.slf4j:slf4j-simple:1.7.25‘
compile ‘net.logstash.log4j:jsonevent-layout:1.7‘
compile ‘org.apache.tomcat:tomcat-servlet-api:8.0.24‘
compile ‘jstl:jstl:1.2‘
compile ‘org.aspectj:aspectjweaver:1.8.6‘
compile ‘org.springframework:spring-beans:4.1.7.RELEASE‘
compile ‘org.springframework:spring-web:4.1.7.RELEASE‘
compile ‘org.springframework:spring-webmvc:4.1.7.RELEASE‘
compile ‘org.springframework:spring-tx:4.1.7.RELEASE‘
compile ‘org.springframework:spring-test:4.0.5.RELEASE‘
compile ‘org.springframework:spring-jdbc:4.1.7.RELEASE‘
compile ‘org.mybatis:mybatis-spring:1.2.3‘
compile ‘org.mybatis:mybatis:3.3.0‘
compile ‘mysql:mysql-connector-java:5.1.36‘
compile ‘com.alibaba:druid:1.0.15‘
compile "com.fasterxml.jackson.core:jackson-databind:2.2.3"
compile "com.fasterxml.jackson.core:jackson-annotations:2.2.3"
compile "com.fasterxml.jackson.core:jackson-core:2.2.3"
providedCompile ‘javax.servlet:servlet-api:2.5‘
testCompile group: ‘junit‘, name: ‘junit‘, version: ‘4.12‘
然后执行这段代码,IDEA会自动下载这些jar包。耐心等待。。。。。。。
(此处会使用默认的maven仓库下载包,该仓库在国外服务器,不同网络访问速率不一,如果很慢,请更换国内的仓库,更换方法百度或谷歌即可)
有些刚用idea的兄弟们可能会发现没有下图右侧的工具栏,此时点击idea窗口左下角的方块小图标就有了
完成之后会发现左侧的"External Libraries"里面出现了我们要的jar包
第三步:建立SSM的包结构,在main目录下建立"java","resources"两个包,前者用来存放java源码文件,后者用来存放配置文件
接下来就是如何在该目录中将SSM的demo跑起来。
首先贴一下我已经建好了的目录
首先是新建SSM需要的配置文件
log4j.properties 如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
log4j.rootLogger=INFO,A1,app log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%p %d %X{uuid} [%c{1} %L] - %m%n log4j.appender.app=org.apache.log4j.DailyRollingFileAppender log4j.appender.app.Encoding=UTF-8 log4j.appender.app.File=/data/tomcat_logs/app.log log4j.appender.app.DatePattern=‘.‘yyyy-MM-dd log4j.appender.app.layout=net.logstash.log4j.JSONEventLayoutV1 log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG |
以上是关于java ssm项目 如何在项目启动时 建立一个socket链接。并在项目中可以随时调用的主要内容,如果未能解决你的问题,请参考以下文章