如何在spring webservice上下文中返回网页?

时间:2014-09-04 06:06:33

标签: java spring web-services tomcat

假设我们使用tomcat作为容器,并且我们使用spring web-service框架实现了一个Web服务服务器。

现在我们想要为用户提供一个网页,以便在浏览器而不是客户端软件中访问我们产品的其他一些功能。

逻辑处理网页请求类似于处理网络服务网页请求。因此,我们希望在与Web服务相同的应用程序上下文中编写生成Web页面的代码。

这可能是一种奇怪的需求,但这是一种需要。

我尝试编写一个servlet并引用Spring加载的服务,但它感觉很脏,有时不起作用:

class ExampleServlet{
    private FooService service = FooService.ins;

    public doGet(HttpServletRequest request, HttpServletResponse response){
           service.doSomething();
           // ...
           return someResponse;
    }

}

@Service
class FooService{
    public static FooService ins = null;
    public FooService(){
        ins = this;
    }

    @Transactional(rollbackFor = Exception.class)
    public void doSomething(){
        // ... 
    }
}
web.xml中的

<servlet>
    <servlet-name>spring-ws</servlet-name>
    <servlet-class>
        org.springframework.ws.transport.http.MessageDispatcherServlet
    </servlet-class>
    <init-param>
      <param-name>transformWsdlLocations</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <display-name>ExampleServlet</display-name>
    <servlet-name>ExampleServlet</servlet-name>
    <servlet-class>com.somepackage.ExampleServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ExampleServlet</servlet-name>
    <url-pattern>/do_something</url-pattern>
</servlet-mapping>