spring+resteasy(JSF)搭建接口

来源:互联网 发布:seo快速优化软件 编辑:程序博客网 时间:2024/05/21 06:33

  搞了一晚上终于配好了spring+resteasy,网上都是spring+mvc ,springMVC跟JSF是冲突的。相信大家在搭建spring+resteasy做服务器的时候肯定遇到很多问题比如

You cannot use resteasy.scan, resteasy.scan.resources, or resteasy.scan.providers with the SpringContextLoaderLister as this may cause serious deployment errors in your application

还有就是简单的maven配置以后找不到service

下面我会列出主要详细步骤配合图片,减少后来人遇到的问题。

首先是web.xml里面的配置

 <!-- this need same with resteasy servlet url-pattern -->     <context-param>         <param-name>resteasy.servlet.mapping.prefix</param-name>         <param-value>/rest</param-value>     </context-param>          <!-- resteasy启动初始化监听器 -->    <listener>         <listener-class>             org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap          </listener-class>     </listener>     <!-- resteasy和spring整合,有了这个,ContextLoaderListener就不要了  -->    <listener>        <listener-class>org.jboss.resteasy.plugins.spring.SpringContextLoaderListener</listener-class>      </listener>           <servlet>         <servlet-name>resteasy-servlet</servlet-name>         <servlet-class>             org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher          </servlet-class>     </servlet>        <servlet-mapping>         <servlet-name>resteasy-servlet</servlet-name>         <url-pattern>/rest/*</url-pattern>     </servlet-mapping>     
下面是pom.xml里面的配置信息

 <jackson.version>2.7.1</jackson.version>        <resteasy-version>3.0.16.Final</resteasy-version>        <httpcomp-version>4.2.5</httpcomp-version>
<dependency>              <groupId>javassist</groupId>              <artifactId>javassist</artifactId>              <version>3.12.1.GA</version>          </dependency>                  <dependency>            <groupId>org.jboss.resteasy</groupId>            <artifactId>resteasy-jaxrs</artifactId>            <version>${resteasy-version}</version>            <exclusions>                <exclusion>                    <groupId>org.slf4j</groupId>                    <artifactId>slf4j-simple</artifactId>                </exclusion>                <exclusion>                    <groupId>javassist</groupId>                    <artifactId>javassist</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>            <version>${httpcomp-version}</version>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpcore</artifactId>            <version>${httpcomp-version}</version>        </dependency>        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpcore-nio</artifactId>            <version>${httpcomp-version}</version>        </dependency>        <dependency>            <groupId>org.jboss.resteasy</groupId>            <artifactId>resteasy-spring</artifactId>            <version>${resteasy-version}</version>            <exclusions>                <exclusion>                    <groupId>org.jboss.resteasy</groupId>                    <artifactId>resteasy-jettison-provider</artifactId>                </exclusion>            </exclusions>        </dependency>        <dependency>            <groupId>org.jboss.resteasy</groupId>            <artifactId>resteasy-jackson2-provider</artifactId>            <version>${resteasy-version}</version>        </dependency>        <dependency>            <groupId>org.jboss.resteasy</groupId>            <artifactId>resteasy-jaxb-provider</artifactId>            <version>${resteasy-version}</version>        </dependency>                                <dependency>        <groupId>org.jboss.resteasy</groupId>        <artifactId>resteasy-servlet-initializer</artifactId>        <version>${resteasy-version}</version>    </dependency>

接着是spring里面的配置最重要的一个部分,不添加 <context:component-scan base-package="com.zhengsu.gsp.app.resteasy"/>配合外接口的@controller就无法找到service,而且添加了这个以后就不需要在spring里面一个个去设置搜索路径了 com.zhengsu.gsp.app.resteasy是作为外放接口的包名,

下面给出loginservice内容里面必须添加@controller

/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package com.zhengsu.gsp.app.resteasy;import com.google.gson.Gson;import java.util.concurrent.ExecutorService;import javax.inject.Inject;import javax.ws.rs.Consumes;import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.PathParam;import javax.ws.rs.container.AsyncResponse;import javax.ws.rs.container.Suspended;import javax.ws.rs.core.Response;import javax.ws.rs.core.MediaType;import javax.ws.rs.Produces; import com.zhengsu.gsp.userAccount.service.UserAccountService;import javax.annotation.Resource;import org.springframework.stereotype.Controller;//import util.json.JacksonUtils;/** * * @author Administrator */@Path("/login")@Controllerpublic class LoginService {            Gson newGson = new Gson();        @Resource(name = "userAccountService")    private  UserAccountService tempService;        @GET    @Path(value = "user/trans/{msg}")    @Produces("application/json")    public String  getMessage(@PathParam("msg") String msg) {               return "[Hello dear! ]"+",MSG:{"+getTempService()+this+"}";      }      /**     * @return the tempService     */    public UserAccountService getTempService() {        return tempService;    }    /**     * @param tempService the tempService to set     */    public void setTempService(UserAccountService tempService) {        this.tempService = tempService;    }    }上面代码中使用的UserAccountService跟JSF使用的方式一样,在spring里面进行同样的配置

最后运行工程你就可以通过调用

http://localhost:8080/gsp/rest/login/user/trans/1来获取接口返回的数据了。。

新手语言组织能力太差。只能这样了。。

0 0
原创粉丝点击