用数据库、GCM和后台线程实现JavaWeb服务器

用数据库、GCM和后台线程实现JavaWeb服务器,java,multithreading,web-services,Java,Multithreading,Web Services,我正在尝试创建一个web服务器,它提供web服务功能,使用GCM与android设备通信,使用数据库,可能还有一些后台工作要做 我目前不确定这种服务器的体系结构。 我知道如何创建一个简单的web服务,但还没有找到超越简单Hello World示例的教程或说明。据我所知,我可以创建一个带有@WebService注释的类,一旦部署到例如Tomcat,服务器将创建该类的至少一个实例,并将该类中注释的函数作为web服务提供 现在我想知道如何最好地实现数据库连接。据我所知,服务器将为每个请求创建一个此类实

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

我目前不确定这种服务器的体系结构。 我知道如何创建一个简单的web服务,但还没有找到超越简单Hello World示例的教程或说明。据我所知,我可以创建一个带有@WebService注释的类,一旦部署到例如Tomcat,服务器将创建该类的至少一个实例,并将该类中注释的函数作为web服务提供

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

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

最后但并非最不重要的一点是,服务器可能必须周期性地做一些工作,这将是某种后台线程,与web服务接收的请求无关。在这里,我不知道该怎么做。web服务没有我知道的主方法,因此我不确定如何创建它

有谁能给我一个关于如何设计这样一个web服务器的guick概述,或者能给我指一下描述如何实现这一点的文档吗?
到目前为止,我只找到了一些简单的例子,这些例子没有涵盖像这样的高级内容。

好的,那么你有3个问题

如何创建Web服务 如何管理数据库连接 执行批处理 所有这些,在同一个应用程序中。首先,我应该建议您分为两个应用程序,一个用于消费Web服务,另一个用于批量处理,包括推送通知IMHO。但是让我们一步一步走

一,。Webservice:这取决于您选择的框架。我通常在春季MVC和泽西之间做出选择

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

三,。执行批处理您可能应该使用单例来管理批处理。此作业管理器将在其他线程上启动作业执行

不知道这是否回答了你的问题/担忧。。请告诉我。

Ryu

我发现自己也陷入了类似的困境。在浏览了超过2天的Web之后,我偶然发现了一个解决方案,即运行一个后台线程,该线程是在servletinit方法初始化期间触发的

也许你可以试一试,让我知道它是否适合你

下面是一个链接,其中有一个示例可以尝试-


干杯

我知道创建web服务很重要。正在使用在NetBeans中创建的JAX-WS服务器。我想知道的是如何让数据库连接和后台工作人员也参与进来。推送通知不能在另一个应用程序中,因为它们是来自android设备的web服务调用的直接结果。请澄清一点:android设备应该能够连接到web服务,我需要数据库来处理帐户和一些数据,然后服务器会通知其他一些android设备发生了什么事情。举个例子,假设我想用安卓设备登录一个帐户,所以如果用户有效,请签入数据库,然后向服务器发送一条消息,服务器在数据库中查找其他设备,然后向这些设备发送一个GCM,表明消息可用。