首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用数据库、GCM和后台线程实现Java Web Server

用数据库、GCM和后台线程实现Java Web Server
EN

Stack Overflow用户
提问于 2014-10-08 11:47:43
回答 2查看 422关注 0票数 1

我正在尝试创建一个web服务器,它提供web服务功能,使用GCM与android设备通信,使用数据库,可能还有一些后台工作要做。

我目前还不确定这样一个服务器的架构。我知道如何创建一个简单的web服务,但除了简单的"Hello World“示例之外,还没有找到其他教程或描述。据我所知,我可以用@WebService注解创建一个类,一旦部署到Tomcat,服务器将创建至少一个该类的实例,并将该类中的带注解的函数作为web服务提供。

现在我想知道如何最好地实现数据库连接。据我所知,服务器会为每个请求创建一个该类的实例,一旦连接关闭,这个实例就会被垃圾回收。由于web服务器提供的几乎所有功能都需要数据库,因此我认为为每个实例创建数据库连接并不是一个好主意,而是使用全局连接来查询数据库。到目前为止,我发现这可以通过将一个处理数据库连接的类作为@Resource或@Singleton注入到web服务类中来实现。但这是做这件事的正确方式吗?或者我太担心了,只需为每个请求创建一个新的数据库连接就可以了?

然后我想发送GCM消息(使用HTML google服务器的简单POST消息),所以我可能会创建一个控制器或管理器类来处理这些请求。这是否也会作为@Resource或@Singleton注入到web服务类中?

最后但并非最不重要的是,服务器可能需要周期性地做一些工作,这将是某种类型的后台线程,它独立于web服务正在接收的请求。在这里,我对如何做到这一点感到无所适从。据我所知,web服务没有main()方法,所以我不确定如何创建它。

有没有人可以给我一个简单的概述,告诉我如何设计这样的web服务器,或者可以给我介绍一下如何实现这一点的文档?到目前为止,我发现的都是简单的例子,没有涵盖像这样的高级内容。

EN

回答 2

Stack Overflow用户

发布于 2014-10-08 15:59:05

好的,你有3个问题/问题。

  1. 如何创建How
  2. 如何管理数据库batch process

所有这些,都在同一个应用程序中。首先,我建议你分成两个应用程序,一个用于消费(Web服务),另一个用于批处理,包括推送通知(IMHO)。但让我们一步一步来。

Webservice:这取决于您选择的框架。我通常在Spring-MVC和Jersey之间做出选择

2.如何管理数据库连接当你查询数据库时,你通常不想疯狂地打开和关闭连接。您希望使用连接池。在连接池中,您将请求一个打开的连接,使用它,并在完成后释放它。通常,连接池是由应用程序服务器管理的。如果你想手动管理连接,你必须使用单例来集中获取和释放。

3.执行batch process您可能应该使用单例来管理batch process。此作业管理器将在其他线程上启动作业执行

不知道这是否回答了您的问题/顾虑。请让我知道。

票数 0
EN

Stack Overflow用户

发布于 2014-11-05 10:54:34

阿龙

我发现自己在一个类似的中。在浏览了两天多的网站后,我偶然发现了运行后台线程的解决方案,该线程在servlet初始化期间触发(init方法)。

也许你可以试一试,让我知道它是否对你有效。

以下是链接,其中包含一个可供尝试的示例- http://docstore.mik.ua/orelly/java-ent/servlet/ch03_05.htm

干杯!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26256183

复制
相关文章
Class文件访问标志&类索引
在常量池以后,紧接着是2个字节的访问标志,用来表示一个Class文件的基本访问信息,包括Class是类还是接口,是否被定义为public类型,是否被定义为abstract类型。具体如下图所示:
shysh95
2020/08/27
1K0
Class文件访问标志&类索引
python类(class)
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例,把所有相似的功能都封装到一个类里,最理想的情况是一个程序只有一个主程序,然后在程序里实例化类
py3study
2018/08/02
4720
python Class(类) and
Python类与面向对象    程序=指令+数据 (或算法+数据结构)。代码可以选择以指令为核心或以数据为核心进行编写。    两种类型        (1)以指令为核心:围绕“正在发生什么”进行编写(面向过程编程:程序具有一系列线性步骤;主体思想是代码作用于数据)以指令为中心,程序员的主要工作在于设计算法。        (2)以数据为核心:围绕“将影响谁”进行编写(面向对象编程OOP:围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访问) 面向对象编程的核心概念     所有编程语言的最终目的都是提供一种抽像方法。     在机器模型("解空间"或"方案空间")与实际解决的问题模型("问题空间")之间,程序员必须建立一种联系。     (1)面向过程:程序=算法+数据结构     (2)面向对象:将问题空间中的元素以及它们在解空间中的表示物抽象为对象,并允许通过问题来描述问题而不是方案(可以把实例想象成一种新型变量,它保存着数据,但可以对自身的数据执行操作)     类是由状态集合(数据)和转换这些状态的操作集合组成     类:定义了被多个同一类型对象共享的结构和行为(数据和代码)     (1)类的数据和代码:即类的成员         数据:成员变量或实例变量         成员方法:简称为方法,是操作数据的代码,用于定义如何使用成员变量;因此一个类的行为和接口是通过方法来定义的。     (2)方法和变量:         私有:内部使用;公共:外部可见  面向对象的程序设计方法     所有东西都是对象;程序是一大堆对象的组合。     通过消息传递,各对象知道自己该做什么。
py3study
2020/01/15
9260
Pseudo elements伪元素与Pseudo classes伪类
::after用于描述处于css渲染层的一个伪元素,相当于选中元素的最后一个子元素,但这个元素与DOM节点无关,位于选择的元素之后,伪元素的内容用content属性描述。
gojam
2019/05/14
8720
python中类(class)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132732.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/14
5430
python中类(class)
Python中类(Class)使用
在Python中所有数据类型都可以被视为对象,而类(Class)是用来描述具有相同的属性和方法的对象的集合,所有它定义了每个集合中对象所共有的属性和方法。
算法与编程之美
2022/02/17
9960
python类class2021.9.15
发现一个现象是,数据挖掘案例并没有太多的类class,只用函数def就能跑完,但是Django等web应用就用到大量类。
用户7138673
2022/09/22
4970
python类class2021.9.15
python的类访问控制
在python类中,有属性和方法,外部代码可以直接通过实例来访问修改。 如果需要让内部的属性不被外部访问到,在属性变量前面加上__2个下划线。 在python中,实例的变量名如果是由__2个下花钱开头
小小科
2018/05/04
1.5K0
python的类访问控制
【说站】python字典的元素访问
当查询到相应的value值时,返回相应的值,当key值不存在时,返回None,代码不会出错。
很酷的站长
2022/11/23
1.2K0
【说站】python字典的元素访问
JS-获取class类名为某个的元素-【getClass】函数封装
原理:  根据class获取元素.  原理是,取出oparent下的所有元素,组成数组,然后遍历类名,全等判断。 源码 1 1 function getClass(oParent,clsName){ 2    var oParent = document.getElementById(oParent); 3 2 var boxArr = new Array(); 4 3 oElements = oParent.getElementsByTagName('*'); 5
xing.org1^
2018/05/17
5.2K0
python 类class基础简明笔记
class 定义一个类 class 定义一个类, 后面的类别首字母推荐以 大写 的形式定义,比如Calculator. 冒号不能缺 class可以先定义自己的属性,比如该属性的名称可以写为 name='Good Calculator'. class后面还可以跟def, 定义一个函数. 比如def add(self,x,y): 加法, 输出print(x+y). 其他的函数定义方法一样,注意这里的self 是默认值. class Calculator: #首字母要大写,冒号不能缺 nam
演化计算与人工智能
2020/08/14
4160
Class类
import java.io.ObjectOutput; public class DEmo { public static void main(String[] args) { Object object = new Object();//第一种方法 Class class1 = object.getClass(); System.out.println(class1.hashCode());//第二种方法 Class class2 = Object.class; System.
用户2965768
2019/03/15
6270
Class类
class 类
抽象类是 TypeScript 中的一种特殊类,它不能直接被实例化,只能被其他类继承或实现。抽象类主要用于定义一些共享的属性和方法,并且可以声明一些抽象方法,这些抽象方法必须在子类中被实现。
程序员王天
2023/10/18
1680
Class(类)
class 的本质是 function。 它可以看作一个语法糖,让对象原型的写法更加清晰、更像面向对象编程的语法。
心念
2023/01/12
6760
【C++】类的封装 ④ ( 访问控制权限 | struct 和 class 关键字定义类的区别 | 类的默认访问权限 | 类的默认继承方式 )
在 C++ 语言中 , 使用 struct 和 class 关键字 , 都可以 用于定义 类 , 这些被定义的类 都 具有相似的语法和功能 , 只是在默认情况下有一些不同的行为 ;
韩曙亮
2023/10/15
2780
javascript类(class)
class Person {} Person.propName = 'person'
用户7043603
2022/02/26
5940
class类加载
Ryan-Miao
2021/12/28
6080
class类加载
Class类的getClassLoader()方法
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143817.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/26
4450
Class类文件的结构
本文介绍了Class文件的结构,包括魔数、版本号、常量池、访问标志、类索引、父类索引、接口索引集合、字段表集合、方法表集合、属性表集合等。此外,还介绍了公有设计和私有实现。
YGingko
2017/12/28
9120
点击加载更多

相似问题

如何使用Selenium和Python使用find_elements_by_class_name()单击元素

12

Python/Selenium -具有长类名的find_elements_by_class_name

13

访问python中加密列表的各个元素

11

使用python通过.find_elements_by_class_name过滤selenium选择的元素

140

Python: Selenium WebDriver find_elements_by_class_name

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档