jersey spring tomcat 集成

首先把jersey的相关jar放到WEB-INF/lib目录下

web.xml

	<servlet>
        <servlet-name>Jersey Spring</servlet-name>
        <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.axisspring.api</param-value>//你的web service类所在的包
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey Spring</servlet-name>
        <url-pattern>/api/*</url-pattern>//你想匹配的路径
    </servlet-mapping>
 

application-context.xml

	<context:annotation-config />
	<context:component-scan base-package="com.axisspring.api" />

    <bean id="apiDao" class="com.axisspring.dao.ApiDao">
    </bean>
    
    <bean id="apiService" class="com.axisspring.api.ApiService" >
    </bean>
    
    <bean id="apiService2" class="com.axisspring.api.ApiService2">
    </bean>
    
    <bean id="apiService3" class="com.axisspring.api.ApiService3">
    </bean>
 

ApiDao

public class ApiDao {
    public String getName() {
        return "mock";
    }
}

ApiService

@Path("s1")
@Component
@Scope("request")
public class ApiService {

    private int count;
    @Autowired
    private ApiDao apiDao;

    @GET
    @Produces(MediaType.APPLICATION_XML)
    public List<City> getCity(@DefaultValue("shanghai") @QueryParam("cname") String cityName) {
        count++;//这里虽然scope设置的是request,但实际上只有一个对象count会一直累加 ????
        List<City> a = new ArrayList<City>();
        for (int i = 0; i < 10; i++) {
            City c = new City();
            c.setName(cityName+ " " + i+" "+count);
            c.setZone("zone " + i + apiDao.getName());
            a.add(c);
        }
        return a;
    }
 

City

@XmlRootElement     //加上这个才能解析成json 或 xml
public class City { 
    private String name;
    private String zone;
 

ApiService2

@Path("s2")
@Component
@Scope("request")
public class ApiService2 {

    @Autowired
    private ApiDao apiDao;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Person getCity(@DefaultValue("shanghai") @QueryParam("cname") String cityName) {
        Person p = new Person();
        p.setAge(22);
        p.setName("lich");
        City c = new City();
        c.setName(cityName);
        c.setZone("zone " + apiDao.getName());
        p.setCity(c);
        return p;
    }
 

输出

http://localhost:8080/axisspring/api/s1

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><cities><city><name>shanghai 0 1</name><zone>zone 0mock</zone></city><city><name>shanghai 1 1</name><zone>zone 1mock</zone></city><city><name>shanghai 2 1</name><zone>zone 2mock</zone></city><city><name>shanghai 3 1</name><zone>zone 3mock</zone></city><city><name>shanghai 4 1</name><zone>zone 4mock</zone></city><city><name>shanghai 5 1</name><zone>zone 5mock</zone></city><city><name>shanghai 6 1</name><zone>zone 6mock</zone></city><city><name>shanghai 7 1</name><zone>zone 7mock</zone></city><city><name>shanghai 8 1</name><zone>zone 8mock</zone></city><city><name>shanghai 9 1</name><zone>zone 9mock</zone></city></cities>

 http://localhost:8080/axisspring/api/s2

{"age":"22","city":{"name":"shanghai","zone":"zone mock"},"name":"lich"}
 

猜你喜欢

转载自renxiangzyq.iteye.com/blog/1028414
今日推荐