2015-12-02 75 views
1

我有一个用C++/C#和数据库编写的客户端软件。现在我不希望客户端直接访问数据库,所以我考虑将应用程序服务器放在中间。这个应该从客户端获得一个简短的请求,向数据库询问新的数据,做一些过滤(不能在sql中完成),然后将数据返回给客户端。没有HTTP的Java应用服务器

我对这种软件的搜索把我带到了Glassfish或Tomcat,但是我的理解问题是,他们总是想用html/jsp来谈谈http。因为我的大部分数据都是经过加密的,所以我不需要这样的纯文本协议,并且只需要一个字节流就可以完全满意。 另一方面,让服务器为我处理线程池会不错(不想从头开始实现)。

经过一天多的搜索/测试,我比开始时更加困惑(ejb,beans,servlet,websocket,...在理解最简单的教程之前google了很多东西)。

TL; DR:我如何让Tomcat/Glassfish打开一个套接字并为每个请求创建一个新线程,而不涉及任何HTML/CSS/JSP?

+0

如果您使用宁静的Web服务,则可以在客户端和服务器之间传递参数。这更符合您的计划方法。一个好的开始是https://spring.io/guides/gs/rest-service/。使用弹簧配置,您可以设置和配置大部分资源。有很多可用的例子。 –

+1

简而言之:除非大量滥用Tomcat,否则不要这样做。 HTTP是Tomcat想要谈论的最低级协议。使用HTTP并从servlet返回二进制数据有什么问题? –

+0

你不需要任何HTML,CSS,JSP。只写一个简单的servlet来查询数据库并以XML,JSON或纯文本形式返回结果。或重新发明轮子并编写自己的协议。但是,你根本不需要应用程序服务器。一个简单的字节流是不够的。您需要传递一些参数并以客户所理解的结构化格式返回结果。所以至少你必须实现一些基本的协议。 – vanje

回答

0

Jetty和Tomcat是所谓的servlet容器,因此主要针对HTTP交换。 Glassfish是一个应用服务器,它使用一个servlet容器作为其模块之一。我会停止这个方向的思考 - 这更像是Web应用程序和Web服务 - 某些级别太高,你要求。

我认为你应该更多地研究一下。像Netty这是一个“高性能协议”服务器。看看文档here(甚至有些可能适合你的用例的教程)。

0

GlassFish是一款面向Java EJB规范的“企业应用服务器”。你的目的肯定会过度。你可以试试Tomcat。它是一个“servlet容器”,以Java Servlet规范为目标。 Servlet有一个目的:通常通过HTTP监听传入的URL(请求),执行Java代码并返回响应。

当然,您可以自己创建(纯文本)ServerSocket,例如使用ServletContextListener(将在应用程序启动后启动)。但是你应该选择更高的协议来发送数据,比如Hessian and Burlap,这个数据同时在Java和C++以及easy to set up中实现。