工作中遇到这样的需求:服务器端同时支持浏览器和手机客户端访问。除了架构上要让业务逻辑可以被复用外,在技术上第一个要解决的问题就是让服务器端在启动web server的同时也启动一个TCP server。一个简单的思路如下(假定后台使用Spring MVC来搭建web服务):在web.xml中一定要定义一个org.springframework.web.servlet.DispatcherServlet,然后Spring会自动读取一个相应的xml配置文件来获取上下文信息。只要我们定义一个专门的servlet,将它的bean定义在该xml配置文件中,Spring读取的时候就会自动初始化这个servlet。然后我们只需要在servlet的初始化代码中启动一个TCP server即可。具体的做法如下:
1. 假设在web.xml中,org.springframework.web.servlet.DispatcherServlet的名字叫SpringMVC,那么Spring会自动读取SpringMVC-servlet.xml。
2. 在SpringMVC-servlet.xml中定义一个bean,指向专门的servlet,比如名字叫StartupServlet.
<bean id="StartupServlet" class="com.springmvc.StartupServlet"/>
3. 在StartupServlet.java中,在初始化代码中启动一个TCP server