2014-10-08 51 views
1

我想创建一个提供Web服务功能的Web服务器,使用GCM与Android设备进行通信,使用数据库并且可能还有一些后台工作要做。实现带有数据库,GCM和后台线程的Java Web服务器

我目前不确定这样的服务器的架构。 我知道如何创建一个简单的Web服务,但没有找到超出简单的“Hello World”示例的教程或描述。据我所知,我可以使用@WebService批注创建一个类,并将其部署到e.G. Tomcat服务器将创建该类的至少一个实例,并将该类中的已注释函数作为Web服务提供。

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

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

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

任何人都可以给我一个关于如何设计这样一个Web服务器的guick概述,或者可以指向我描述如何实现这一点的文档? 到目前为止,我发现的所有内容都是简单的例子,并不包含像这样的高级内容。

回答

0

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

  1. 如何创建一个WebService
  2. 如何管理数据库连接
  3. 执行批处理过程

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

1. Webservice:这取决于你选择的框架。我通常在Spring-MVC或Jersey之间作出选择

2.如何管理数据库连接查询数据库时,通常不想打开和关闭连接。你想要使用连接池。在连接池中,您将要求建立一个开放连接,并使用它,并在完成时释放它。通常,应用程序服务器会管理连接池。如果你想手动管理连接,你必须使用单例来集中获取和释放。

3.执行批处理您可能应该使用单例管理批处理。这位工作经理将启动在其他线程上的工作执行

不知道这是否回答您的问题/关注..请让我知道。

+0

我知道很热,创建一个Web服务。正在使用在NetBeans中创建的JAX-WS服务器。我想知道的是如何获得数据库连接以及后台工作人员。推送通知不能在另一个应用程序中,因为它们是来自android设备的Web服务调用的直接结果。 – 2014-10-09 19:03:44

+0

澄清一点:Android设备应该能够连接到Web服务,我需要数据库来处理帐户和一些数据,然后服务器通知其他Android设备发生了一些事情。为了举例,假设我想用android设备登录一个帐户(如果用户有效,那么检查数据库),然后向服务器发送消息,服务器查找数据库中的其他设备,然后发送GCM对于这些,消息是可用的。 – 2014-10-09 19:04:29

0

刘某,

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

也许你可以给这个镜头,让我知道它是否适合你。

下面是它有一个例子来尝试链接 - http://docstore.mik.ua/orelly/java-ent/servlet/ch03_05.htm

干杯!