xfireでのコレクションの構成
10684 ワード
xfireの様々な方法のマッピングと集合マッピングをまとめ、jarパケットはxfireの下のすべてです.
Userクラス:
PageInfoクラス:
PageInfo.aegis.xmlマッピングプロファイル:
インタフェースjava:
インタフェースの実装:
IHelloService.aegis.xmlマッピング:
IHelloService.doc.xmlは書かなくてもいいでしょう.
クライアントコードHelloClientクラス:
クライアントコードを実行するには、ビジネスインタフェースのパッケージを必ず導入し、1つのプロジェクトで省略することができます.
Userクラス:
package org.forever.entity;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = 1668097150623622102L;
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
PageInfoクラス:
package org.forever.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
*
* @author Administrator
*
*/
public class PageInfo {
private int pageIndex = 0;
private List<User> list = new ArrayList<User>();
private Set<User> set = new HashSet<User>();
private Map<String, User> map = new HashMap<String, User>();
private User user = new User();
public PageInfo() {
}
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
public Set<User> getSet() {
return set;
}
public void setSet(Set<User> set) {
this.set = set;
}
public Map<String, User> getMap() {
return map;
}
public void setMap(Map<String, User> map) {
this.map = map;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
PageInfo.aegis.xmlマッピングプロファイル:
<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns:my="http://my.bjvsp.tongtech.com">
<mapping name="PageInfo">
<property name="list"
componentType="org.forever.entity.User" />
</mapping>
<mapping name="PageInfo">
<property name="set" componentType="org.forever.entity.User"></property>
</mapping>
<mapping name="PageInfo">
<property name="map" keyType="java.lang.String" componentType="org.forever.entity.User"></property>
</mapping>
</mappings>
インタフェースjava:
package org.forever.webservice;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.forever.entity.PageInfo;
import org.forever.entity.User;
public interface IHelloService {
public String sayHello(String content);
public User get(User user);
public List getAll(List list);
public PageInfo getPage(User user,List list,Set set,Map map);
}
インタフェースの実装:
package org.forever.webservice.impl;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.forever.entity.PageInfo;
import org.forever.entity.User;
import org.forever.webservice.IHelloService;
public class HelloServiceImpl implements IHelloService {
public User get(User user) {
System.out.println("HelloServiceImpl.get(user);");
user.setUsername("sotry");
return user;
}
public List getAll(List list) {
System.out.println("HelloServiceImpl.getAll(List list);");
list.add(new User(88, " ", "admin"));
list.add(new User(99, " ", "forever"));
return list;
}
public String sayHello(String content) {
System.out.println("HelloServiceImpl.sayHello(String content);");
return content+" ";
}
public PageInfo getPage(User user, List list, Set set, Map map) {
System.out.println("HelloServiceImpl.getPage()");
user.setUsername("webService update username");
list.add(new User(3, "admin", "admin"));
set.add(new User(3, "admin", "admin"));
map.put("key", new User(3, "admin", "admin"));
PageInfo pageInfo = new PageInfo();
pageInfo.setList(list);
pageInfo.setSet(set);
pageInfo.setMap(map);
pageInfo.setUser(user);
return pageInfo;
}
}
IHelloService.aegis.xmlマッピング:
<mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xfire.codehaus.org/schemas/1.0/mapping.xsd">
<mapping>
<method name="getAll">
<parameter index="0" componentType="org.forever.entity.User"/>
<return-type mappedName="userList" componentType="org.forever.entity.User" />
</method>
<method name="getPage">
<parameter index="1" componentType="org.forever.entity.User"/>
<parameter index="2" componentType="org.forever.entity.User"/>
<!-- map -->
<parameter index="3" mappedName="userMap" keyType="java.lang.String" componentType="org.forever.entity.User"/>
<return-type componentType="org.forever.entity.PageInfo" />
</method>
</mapping>
</mappings>
IHelloService.doc.xmlは書かなくてもいいでしょう.
<service>
<documentation>
Service which allows to search for books
</documentation>
<method name="get" parametersNumber="1" >
<documentation>
,
</documentation>
<parameter index="0">
<documentation>
</documentation>
</parameter>
<return>
<documentation>
</documentation>
</return>
</method>
<method name="getAll" parametersNumber="1" >
<documentation>
list
</documentation>
<parameter index="0">
<documentation>
</documentation>
</parameter>
<return>
<documentation>
</documentation>
</return>
</method>
</service>
クライアントコードHelloClientクラス:
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.forever.entity.PageInfo;
import org.forever.entity.User;
import org.forever.webservice.IHelloService;
public class HelloClient {
public static void main(String[] args) {
//
Service service = new ObjectServiceFactory().create(IHelloService.class);
//
XFireProxyFactory fireProxyFactory = new XFireProxyFactory();
//
try {
IHelloService helloService = (IHelloService) fireProxyFactory.create(service, "http://127.0.0.1:8080/WebService/services/helloService");
System.out.println(helloService.sayHello(" "));
User user = new User(1,"wrwr","wrwrwr");
helloService.get(user);
System.out.println(user.getUsername());
List<User> users = new ArrayList<User>();
users.add(new User(1,"wrwr","wrwrwr"));
users.add(new User(1,"wrwr","wrwrwr"));
users = helloService.getAll(users);
System.out.println(users.size());
System.out.println("***************************");
PageInfo pageInfo = helloService.getPage(new User(), new ArrayList(),new HashSet<User>(),new HashMap<String, User>());
System.out.println(" ");
} catch (MalformedURLException e) {
e.printStackTrace();
}
System.out.println(" client :");
Object[] results;
try {
Client client = new Client(new URL(
"http://127.0.0.1:8080/WebService/services/helloService?wsdl"));
results = client
.invoke("sayHello", new Object[] {" "});
System.out.println(results[0]);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
クライアントコードを実行するには、ビジネスインタフェースのパッケージを必ず導入し、1つのプロジェクトで省略することができます.