81,091
社区成员
发帖
与我相关
我的任务
分享
<jaxrs:server id="cws" address="/cxfwebservice">
<jaxrs:serviceBeans>
<ref bean="rest_cxfweb"/>
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
<jaxrs:languageMappings>
<entry key="en" value="en-gb" />
</jaxrs:languageMappings>
</jaxrs:server>
另外我把所有的包都换成2.7的了,虽然错误还有,慢慢解决吧
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" />
<bean id="outMessageInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
<jaxws:endpoint id="helloWorld" implementor="smvc.cxfWebservice.Cxfweb"
address="/cxfweb" />
<jaxrs:server id="cxfService" address="/">
<jaxrs:serviceBeans>
<bean class="smvc.cxfWebservice.Cxfweb" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
<jaxrs:languageMappings>
<entry key="en" value="en-gb" />
</jaxrs:languageMappings>
<jaxrs:inInterceptors>
<ref bean="inMessageInterceptor" />
</jaxrs:inInterceptors>
<jaxrs:outInterceptors>
<ref bean="outMessageInterceptor" />
</jaxrs:outInterceptors>
</jaxrs:server>
<bean id="client" class="smvc.cxfWebservice.Cxfweb" factory-bean="clientFactory"
factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="smvc.cxfWebservice.Cxfweb" />
<property name="address"
value="http://localhost:8080/springMVC1/springWebservice/cxfweb" />
</bean>
哪里出了问题哎,是404错误
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<bean id="inMessageInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" />
<bean id="outMessageInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />
<jaxws:endpoint id="helloWorld" implementor="smvc.cxfWebservice.Cxfweb"
address="/cxfweb" />
<jaxrs:server id="cxfService" address="/">
<jaxrs:serviceBeans>
<bean class="smvc.cxfWebservice.Cxfweb" />
</jaxrs:serviceBeans>
<jaxrs:extensionMappings>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</jaxrs:extensionMappings>
<jaxrs:languageMappings>
<entry key="en" value="en-gb" />
</jaxrs:languageMappings>
<jaxrs:inInterceptors>
<ref bean="inMessageInterceptor" />
</jaxrs:inInterceptors>
<jaxrs:outInterceptors>
<ref bean="outMessageInterceptor" />
</jaxrs:outInterceptors>
</jaxrs:server>
<bean id="client" class="smvc.cxfWebservice.Cxfweb" factory-bean="clientFactory"
factory-method="create" />
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="smvc.cxfWebservice.Cxfweb" />
<property name="address"
value="http://localhost:8080/springMVC1/springWebservice/cxfweb" />
</bean>
不行啊
@POST
@Path("/product")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
Product createProduct(Product product);
上面我写一个函数,想让客户端使用restful方式访问,那就加上注解 @post表示要用HTTP的POST,Path表示资源所在路径,每个方法上加上路径区分不同的方法,类上也可以加。以前的直接调createP方法,现在改成了 POST xxxxx/product的http命令。后面的两个注解是表示接受和返回的是json数据。
声明的时候,也差不多。
<!-- restful 服务测试 -->
//这就是实现功能的类。
<bean id="productServiceImpl" class="services.rest.ProductServiceImpl" />
//这个address是为了跟普通的soap webservice区分,把restful的service放到这个/rests/下
<jaxrs:server address="/rests">
//提供服务的类。
<jaxrs:serviceBeans>
<ref bean="productServiceImpl" />
</jaxrs:serviceBeans>
//额外的东西,json跟java对象转换的工具。
<jaxrs:providers>
<bean class ="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
</jaxrs:providers>
</jaxrs:server>
cxf post跨域的问题,用cxf的方式没有解决,我直接把tomcat升级到7,用tomcat的方式解决的。
在web.xml添上这么一句。
<filter>
<filter-name>cors-filter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>