【转】Apache CXF入门范例以及对传递List<Map>类型的疑惑
来源:互联网 发布:笑果软件融合 编辑:程序博客网 时间:2024/05/17 05:14
【转】Apache CXF入门范例以及对传递List<Map>类型的疑惑
- 博客分类:
- java
转自:http://icecrystal.iteye.com/blog/532743
在选择WebService框架的过程中,偶最终选择了Apache CXF,純粹伿諟銦爲听说它与Spring的无缝整合
想当初用Axis的时候,因为没有太好的办法让Spring能够集成Axis,只好平白无故地多出一个WebService代理类,让偶的感觉很是不爽
偶要在此记载一下CXF的一些入门知识
首珗,倌網哋址諟http://cxf.apache.org/,里面可以找到User's Guide和download地址,偶的版本是目前最新的
apache-cxf-2.2.5
先来做一个最简单的入门级别例子吧,也就是经典的HelloWord
Server端代码
WebService接口HelloService.java
- package cfx.server;
- import javax.jws.WebMethod;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- @WebService
- public interface HelloService {
- @WebMethod
- String sayHi(@WebParam String name);
- }
- package cfx.server;
- import javax.jws.WebMethod;
- import javax.jws.WebParam;
- import javax.jws.WebService;
- @WebService
- public interface HelloService {
- @WebMethod
- String sayHi(@WebParam String name);
- }
package cfx.server;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebService;@WebServicepublic interface HelloService {@WebMethodString sayHi(@WebParam String name);}
实现类HelloServiceImpl.java
- public class HelloServiceImpl implements HelloService {
- public String sayHi(String name) {
- System.out.println("HelloServiceImpl.sayHi called");
- return "Hello"+name;
- }
- public class HelloServiceImpl implements HelloService {
- public String sayHi(String name) {
- System.out.println("HelloServiceImpl.sayHi called");
- return "Hello"+name;
- }
public class HelloServiceImpl implements HelloService {public String sayHi(String name) {System.out.println("HelloServiceImpl.sayHi called");return "Hello"+name;}
WebService配置文件:cxf-servlet.xml(可放置于WEB-INF目录下)
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:soap="http://cxf.apache.org/bindings/soap"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
- http://cxf.apache.org/jaxws
- http://cxf.apache.org/schemas/jaxws.xsd">
- <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello">
- <jaxws:serviceBean>
- <bean class="cfx.server.HelloServiceImpl" />
- </jaxws:serviceBean>
- </jaxws:server>
- </beans>
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xmlns:soap="http://cxf.apache.org/bindings/soap"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
- http://cxf.apache.org/jaxws
- http://cxf.apache.org/schemas/jaxws.xsd">
- <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello">
- <jaxws:serviceBean>
- <bean class="cfx.server.HelloServiceImpl" />
- </jaxws:serviceBean>
- </jaxws:server>
- </beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:soap="http://cxf.apache.org/bindings/soap" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsdhttp://cxf.apache.org/jaxwshttp://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello"> <jaxws:serviceBean> <bean class="cfx.server.HelloServiceImpl" /> </jaxws:serviceBean> </jaxws:server></beans>
web.xml代码,用于添加CXFServlet这个处理webservice请求的控制器类
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <servlet>
- <description>Apache CXF Endpoint</description>
- <display-name>cxf</display-name>
- <servlet-name>cxf</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>cxf</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>60</session-timeout>
- </session-config>
- </web-app>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <servlet>
- <description>Apache CXF Endpoint</description>
- <display-name>cxf</display-name>
- <servlet-name>cxf</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>cxf</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>60</session-timeout>
- </session-config>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <description>Apache CXF Endpoint</description> <display-name>cxf</display-name> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>60</session-timeout> </session-config></web-app>
Client端测试代码
- public class CXF {
- public static void main(String[] args) {
- JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
- factory.getInInterceptors().add(new LoggingInInterceptor());
- factory.getOutInterceptors().add(new LoggingOutInterceptor());
- factory.setServiceClass(HelloService.class);
- factory.setAddress("http://localhost:8080/cxf/services/hello");
- HelloService client = (HelloService) factory.create();
- String reply = client.sayHi("特蕾莎");
- System.out.println("Server said: " + reply);
- }
- public class CXF {
- public static void main(String[] args) {
- JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
- factory.getInInterceptors().add(new LoggingInInterceptor());
- factory.getOutInterceptors().add(new LoggingOutInterceptor());
- factory.setServiceClass(HelloService.class);
- factory.setAddress("http://localhost:8080/cxf/services/hello");
- HelloService client = (HelloService) factory.create();
- String reply = client.sayHi("特蕾莎");
- System.out.println("Server said: " + reply);
- }
public class CXF {public static void main(String[] args) {JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();factory.getInInterceptors().add(new LoggingInInterceptor());factory.getOutInterceptors().add(new LoggingOutInterceptor());factory.setServiceClass(HelloService.class);factory.setAddress("http://localhost:8080/cxf/services/hello");HelloService client = (HelloService) factory.create();String reply = client.sayHi("特蕾莎");System.out.println("Server said: " + reply);}
*****************************************************************************
怎么样,是不是很简单啊!现在再来一个和Spring整合的例子
注意,Server端和Client端都要通过Spring-bean的方式整合
Server端现在有四个文件,假设是
HelloService.java
HelloServiceImpl.java
HelloDao.java
HelloDaoImpl.java
在HelloServiceImpl中存在一个HelloDao的属性,代码省略如下
- public class HelloServiceImpl implements HelloService {
- private HelloDao dao;
- public String sayHi(String name) {
- System.out.println("HelloServiceImpl.sayHi called");
- return dao.getString(name);
- }
- }
- public class HelloServiceImpl implements HelloService {
- private HelloDao dao;
- public String sayHi(String name) {
- System.out.println("HelloServiceImpl.sayHi called");
- return dao.getString(name);
- }
- }
public class HelloServiceImpl implements HelloService {private HelloDao dao;public String sayHi(String name) {System.out.println("HelloServiceImpl.sayHi called");return dao.getString(name);}}
HelloDaoImpl用于处理持久化,代码省略咯
需要修改的是配置文件,此时可以这样改
首先在web.xml里加入Spring监听器
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext*.xml</param-value>
- </context-param>
- <servlet>
- <description>Apache CXF Endpoint</description>
- <display-name>cxf</display-name>
- <servlet-name>cxf</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>cxf</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>60</session-timeout>
- </session-config>
- </web-app>
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext*.xml</param-value>
- </context-param>
- <servlet>
- <description>Apache CXF Endpoint</description>
- <display-name>cxf</display-name>
- <servlet-name>cxf</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>cxf</servlet-name>
- <url-pattern>/services/*</url-pattern>
- </servlet-mapping>
- <session-config>
- <session-timeout>60</session-timeout>
- </session-config>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext*.xml</param-value> </context-param> <servlet> <description>Apache CXF Endpoint</description> <display-name>cxf</display-name> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>60</session-timeout> </session-config></web-app>
橪銗WEB-INF/cxf-servlet這個忟件可以省略咯
把一个标准的spring-bean文件放在src下(即classes目录下),要让人一看就知道spring大哥进来咯
applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
- <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="helloDao" class="cfx.server.HelloDaoImpl" />
- <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello">
- <jaxws:serviceBean>
- <bean id="helloService" class="cfx.server.HelloServiceImpl">
- <property name="dao" ref="helloDao" />
- </bean>
- </jaxws:serviceBean>
- </jaxws:server>
- </beans>
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
- <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="helloDao" class="cfx.server.HelloDaoImpl" />
- <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello">
- <jaxws:serviceBean>
- <bean id="helloService" class="cfx.server.HelloServiceImpl">
- <property name="dao" ref="helloDao" />
- </bean>
- </jaxws:serviceBean>
- </jaxws:server>
- </beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <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="helloDao" class="cfx.server.HelloDaoImpl" /> <jaxws:server id="jaxwsService" serviceClass="cfx.server.HelloService" address="/hello"> <jaxws:serviceBean> <bean id="helloService" class="cfx.server.HelloServiceImpl"> <property name="dao" ref="helloDao" /> </bean> </jaxws:serviceBean> </jaxws:server></beans>
這樣啟動服務器的时候,spring就自动进行bean的注入以及WebService服务的发布了
接下来是客户端代码
銦爲諟普通Java,所以就简单配一下愙戸端的spring文件了
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
- <bean id="HelloService" class="cfx.server.HelloService" factory-bean="clientFactory" factory-method="create" />
- <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
- <property name="serviceClass" value="cfx.server.HelloService" />
- <property name="address" value="http://localhost:8080/cxf/services/hello" />
- </bean>
- </beans>
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
- <bean id="HelloService" class="cfx.server.HelloService" factory-bean="clientFactory" factory-method="create" />
- <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
- <property name="serviceClass" value="cfx.server.HelloService" />
- <property name="address" value="http://localhost:8080/cxf/services/hello" />
- </bean>
- </beans>
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd"> <bean id="HelloService" class="cfx.server.HelloService" factory-bean="clientFactory" factory-method="create" /> <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> <property name="serviceClass" value="cfx.server.HelloService" /> <property name="address" value="http://localhost:8080/cxf/services/hello" /> </bean></beans>
CXFClientTest.java
- public static void main(String[] args) {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "cfx/client/client-beans.xml" });
- HelloService client = (HelloService) context.getBean("HelloService");
- testString(client);
- }
- static void testString(HelloService client) {
- String reply = client.sayHi("特蕾莎");
- System.out.println("Server said: " + reply);
- }
- public static void main(String[] args) {
- ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "cfx/client/client-beans.xml" });
- HelloService client = (HelloService) context.getBean("HelloService");
- testString(client);
- }
- static void testString(HelloService client) {
- String reply = client.sayHi("特蕾莎");
- System.out.println("Server said: " + reply);
- }
public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "cfx/client/client-beans.xml" });HelloService client = (HelloService) context.getBean("HelloService");testString(client);}static void testString(HelloService client) {String reply = client.sayHi("特蕾莎");System.out.println("Server said: " + reply);}
*************************************************************************
然后是复杂数据类型的问题,经过测试,发觉基本数据类型和List都是没有问题的,我的测试方法包括
- @WebMethod
- String sayHi(@WebParam String name);
- @WebMethod
- List<Integer> getList(@WebParam List<String> strs);
- @WebMethod
- List<User> getJavaBean();
- @WebMethod
- String sayHi(@WebParam String name);
- @WebMethod
- List<Integer> getList(@WebParam List<String> strs);
- @WebMethod
- List<User> getJavaBean();
@WebMethodString sayHi(@WebParam String name);@WebMethodList<Integer> getList(@WebParam List<String> strs);@WebMethodList<User> getJavaBean();
但是传递Map时,就出现问题了,所以参照了user's guide,得到如下解决办法
测试某个方法的参数和返回值都是Map类型
- @WebMethod
- @XmlJavaTypeAdapter(MapAdapter.class)
- Map<String, String> getMap(@WebParam @XmlJavaTypeAdapter(MapAdapter.class) Map<String, String> map);
- @WebMethod
- @XmlJavaTypeAdapter(MapAdapter.class)
- Map<String, String> getMap(@WebParam @XmlJavaTypeAdapter(MapAdapter.class) Map<String, String> map);
@WebMethod@XmlJavaTypeAdapter(MapAdapter.class)Map<String, String> getMap(@WebParam @XmlJavaTypeAdapter(MapAdapter.class) Map<String, String> map);
MapAdapter是我自己写的用於數據類型轉換的适配器类,代码如下
- public class MapAdapter extends XmlAdapter<MapConvertor, Map<String, Object>> {
- @Override
- public MapConvertor marshal(Map<String, Object> map) throws Exception {
- MapConvertor convertor = new MapConvertor();
- for(Map.Entry<String, Object> entry:map.entrySet()){
- MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry);
- convertor.addEntry(e);
- }
- return convertor;
- }
- @Override
- public Map<String, Object> unmarshal(MapConvertor map) throws Exception {
- Map<String, Object> result = new HashMap<String,Object>();
- for(MapConvertor.MapEntry e :map.getEntries()){
- result.put(e.getKey(), e.getValue());
- }
- return result;
- }
- }
- public class MapAdapter extends XmlAdapter<MapConvertor, Map<String, Object>> {
- @Override
- public MapConvertor marshal(Map<String, Object> map) throws Exception {
- MapConvertor convertor = new MapConvertor();
- for(Map.Entry<String, Object> entry:map.entrySet()){
- MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry);
- convertor.addEntry(e);
- }
- return convertor;
- }
- @Override
- public Map<String, Object> unmarshal(MapConvertor map) throws Exception {
- Map<String, Object> result = new HashMap<String,Object>();
- for(MapConvertor.MapEntry e :map.getEntries()){
- result.put(e.getKey(), e.getValue());
- }
- return result;
- }
- }
public class MapAdapter extends XmlAdapter<MapConvertor, Map<String, Object>> {@Overridepublic MapConvertor marshal(Map<String, Object> map) throws Exception {MapConvertor convertor = new MapConvertor();for(Map.Entry<String, Object> entry:map.entrySet()){MapConvertor.MapEntry e = new MapConvertor.MapEntry(entry);convertor.addEntry(e);}return convertor;}@Overridepublic Map<String, Object> unmarshal(MapConvertor map) throws Exception {Map<String, Object> result = new HashMap<String,Object>();for(MapConvertor.MapEntry e :map.getEntries()){result.put(e.getKey(), e.getValue());}return result;}}
MapConvertor.java Map格式转换类
- @XmlType(name = "MapConvertor")
- @XmlAccessorType(XmlAccessType.FIELD)
- public class MapConvertor {
- private List<MapEntry> entries = new ArrayList<MapEntry>();
- public void addEntry(MapEntry entry){
- entries.add(entry);
- }
- public static class MapEntry{
- public MapEntry() {
- super();
- }
- public MapEntry(Map.Entry<String,Object> entry) {
- super();
- this.key = entry.getKey();
- this.value = entry.getValue();
- }
- public MapEntry(String key,Object value) {
- super();
- this.key = key;
- this.value = value;
- }
- private String key;
- private Object value;
- public String getKey() {
- return key; </ < div>
- 【转】Apache CXF入门范例以及对传递List<Map>类型的疑惑
- spring,cxf,restful发布webservice传递List,Map,List<Map>
- 【WebService框架-CXF】——CXF对Map等无法自动转化的类型的处理
- 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
- 【WebService】CXF处理javaBean等复合类型以及Map等复杂类型的数据
- List<Map>类型的JavaScript数组应用范例:资讯列表多样化显示
- List<Map>类型的JavaScript数组应用范例:图片多样化显示
- springMVC 参数传递之:数组,Map,List,Set以及自定义复杂类型参数
- Apache CXF实战之八 Map类型绑定
- Apache CXF实战之八 Map类型绑定
- Apache CXF实战之八 Map类型绑定
- Apache CXF实战之八 Map类型绑定
- Apache CXF实战之八 Map类型绑定
- Apache CXF实战之八 Map类型绑定
- CXF实现webservice 解决list<map>类型转换
- Apache CXF使用入门
- Apache CXF入门
- Apache CXF入门
- Struts工作机制?为什么要使用Struts?
- openlayers+geojson
- 在 GridView 的脚注中显示小结信息
- 试题三:古代人的难题( puzzle.pas/c/cpp) 斐波那契数列
- 在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件
- 【转】Apache CXF入门范例以及对传递List<Map>类型的疑惑
- IBM融入FileNet技术提升ECM能力
- log4cplus代码OO面向对象设计
- WebService-CXF
- 使用eclipse编译android源码
- Android权限之三共享UID和签名
- MATLAB中导入数据:importdata函数
- 中国科大的毕业生去向
- Makefile详解