maven工程的Jersey Web Service

来源:互联网 发布:linux切换至具体目录 编辑:程序博客网 时间:2024/06/07 20:02

1.在父类工程中配置pom.xml文件:

<!-- 项目属性 、版本号-->
    <properties>

。。。。。。《省略其它属性》。。。。。。。

<jersey.version>2.21</jersey.version>
        <validation.version>1.0.0.GA</validation.version>
    </properties>

<!-- Jersey Dependencies begin - 配置具体的包->

            <dependency>
              <groupId>org.glassfish.jersey.containers</groupId>
              <artifactId>jersey-container-grizzly2-http</artifactId>
              <version>${jersey.version}</version>
            </dependency>
            <dependency>
              <groupId>org.glassfish.jersey.media</groupId>
              <artifactId>jersey-media-json-jackson</artifactId>
              <version>${jersey.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.containers</groupId>
                <artifactId>jersey-container-servlet</artifactId>
                <version>${jersey.version}</version>
            </dependency>
            <dependency>
                <groupId>org.glassfish.jersey.ext</groupId>
                <artifactId>jersey-spring3</artifactId>
                <version>${jersey.version}</version>
            </dependency>
            <!-- Jersey Dependencies end -->

然后在写业务方法的子工程pom.xml文件下配置具体的jar包(实际就是引用父类的包,在父类配置主要是为了别的子工程需要用到此包时,不需要重新配置,直接引用即可,注意观察,这里的包是不用再写版本号的):

<!-- Jersey Dependencies begin -->
        <dependency>
          <groupId>org.glassfish.jersey.containers</groupId>
          <artifactId>jersey-container-grizzly2-http</artifactId>
        </dependency>
        <dependency>
          <groupId>org.glassfish.jersey.media</groupId>
          <artifactId>jersey-media-json-jackson</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-servlet</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.ext</groupId>
            <artifactId>jersey-spring3</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>
        <!-- Jersey Dependencies end -->

4.在web子工程中的web.xml中配置拦截器

<!-- 请求拦截器,拦截所有/services/*的地址进行处理 -->
    <servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <!-- 配置自己的资源加载类 -->
   <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.jmwrapid.suport.ApplicationContextSupport</param-value>
    </init-param>
    <init-param>
      <param-name>jersey.config.beanValidation.enableOutputValidationErrorEntity.server</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

5.web.xml配置文件的资源加载类需要自己写一个class,然后将你写的service代码包名放进去(上面配置中的ApplicationContextSupport就是这里自己写的一个类,其主要是把你所写代码所在的包名加载进去进行拦截调用):/*
package com.jmwrapid.suport;

import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;

/**
 * A simple package based configuration
 *
 * @author Geoffroy Warin (http://geowarin.github.io)
 */
@Component
public class ApplicationContextSupport extends ResourceConfig {

    public ApplicationContextSupport() {
        
        packages("com.jmwrapid.jersey.service");
        //packages("com.gzzn.credit.business.external");
        
    }
}

如图:

6.上图中的包路劲即是你写的service类代码,也就是具体的业务方法:

如:

package com.jmwrapid.jersey.service;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

import com.gzzn.common.persist.IEntityDao;
import com.gzzn.common.persist.jdbc.IJdbcDao;
import com.gzzn.util.string.Stringbuffer;
import com.jmwrapid.model.QuestionCorpInfo;
import com.jmwrapid.model.QuestionMonth;
import com.jmwrapid.model.QuestionMonthNew;
import com.jmwrapid.model.QuestionMonthProd;
/**
 * webService控制类
 * @author guangwen zhou
 *
 */
@Path("/ws")
public class JerseyWsServiceImp{
    
    @Autowired
    private IEntityDao dao;
    @Autowired
    protected IJdbcDao jdbcDao;
    /***********************************获取企业基础信息问卷信息<开始>1*************************************************/
    /**
     * 获取企业基础信息问卷信息,返回XML格式的字符串
     * @param corpOrgcode 组织机构代码
     * @param corpName    企业名称
     * @param reportYear  报表所属年份
     * @return
     */
//    @GET
    @POST
    @Path("/findQuestionInfo")
    @Produces("text/plain;charset=UTF-8")  
    public String findQuestionInfo(@QueryParam("corpOrgcode") String corpOrgcode,
            @QueryParam("corpName") String corpName,@QueryParam("reportYear") Integer reportYear) {
        Stringbuffer sql = new Stringbuffer();
        sql.append("SELECT * \n");
        sql.append("FROM question_corp_info q \n");
        sql.append("where 1=1\n");
        /**
         * 组织机构代码

。。。。。《省略》。。。。。

这里给个测试类,注意GET跟PATH不能同时存在,否则你访问的时候会报错,具体什么错忘了,有兴趣的可以试试看:

package com.jmwrapid.jersey.service;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
/*
 * Jersey web Service 接口类
 * @author guangwen zhou
 */
@Path("/ws")
public interface JerseyWsService {
    
    /**
     * 查找企业基础信息问卷
     * @param params
     * @return
     */
    @GET
//    @Path("/findQuestionInfo")
    @Produces("text/plain;charset=UTF-8")  
    public String findQuestionInfo(@PathParam("param") String corpOrgcode,@PathParam("param") String corpName,@PathParam("param") Integer reportYear);
  
    @GET
//    @Path("/sayHello")
    @Produces("text/plain;charset=UTF-8")  
    public String sayHello(@PathParam("param") String words);
    
}

7.到这,Jersey web service 基本完成啦

输入路径就可以访问啦:

http://localhost:8080/jmw-rapid/services/ws/findQuestionInfo



1 0
原创粉丝点击