|
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-09-05 关键字: xfire
实例中包括三个情况,我想基本上可以概括所有的需求,或者自己稍加扩展即可。先来看看我们的Interface。 1
package test;2 3 import java.util.List;4 5 public interface IHelloService {6 public String sayHello(String ttt);7 8 public Course choose(User u);9 10 public List test(List t);11 } 这其中包含了简单对象的传递,对象的传递,List的传递。 1
package test;2 ![]() 3 import java.util.ArrayList;4 import java.util.List;5 ![]() 6 public class HelloServiceImpl implements IHelloService {7 ![]() 8 public String sayHello(String ttt) {9 return "Hello, "+ttt;10 }11 12 public Course choose(User u){13 System.out.println(u.getName());14 Course c=new Course();15 c.setName("Eee");16 return c; 17 18 }19 20 public List test(List t){21 for (int i = 0; i < t.size(); i++) {22 System.out.println((String) t.get(i));23 }24 List al=new ArrayList();25 Course c=new Course();26 c.setName("EeeDDDDDD");27 al.add(c);28 return al;29 30 }31 }用到的User和Course两个类的代码如下: 1
package test;2 ![]() 3 public class User {4 private String name;5 ![]() 6 public String getName() {7 return name;8 }9 ![]() 10 public void setName(String name) {11 this.name = name;12 }13 }14 ![]() 1
package test;2 ![]() 3 public class Course {4 private String name;5 ![]() 6 public String getName() {7 return name;8 }9 ![]() 10 public void setName(String name) {11 this.name = name;12 }13 ![]() 14 }
1
<?xml version="1.0" encoding="UTF-8"?>2 <beans xmlns="http://xfire.codehaus.org/config/1.0">3 ![]() 4 <service>5 <name>HelloService</name>6 <namespace>http://test/HelloService</namespace>7 <serviceClass>test.IHelloService</serviceClass>8 <implementationClass>test.HelloServiceImpl</implementationClass>9 </service>10 11 </beans>此文件放在src/META-INF/xfire/services.xml,编译时会自动编译到classes的相应目录下面。 1. 如果Web Services的方法的参数是Collections,那就需要建一个Mapping文件,而且Mapping文件的命名为className.aegis.xml,并且与class放在同一个package下。 <parameter index="0" componentType="java.lang.String"/>表示第一个参数,里面实际值的类型,这里实际值的类型是java.lang.String. 2. 如果返回类型是List或Map,并且里面存放的是自定义类的话,则需要增加一个对于服务接口的配置文件。该文件的命名规则是 接口文件名.aegis.xml。例如接口是UserService.java的话,则此配置文件命名为UserService.aegis.xml。注意此配置文件须与接口放在同一目录下面。 如果返回的类型是Map的话,做法和List一样。但定义的类型,是Map中的Value部分,并且这样的话,Map中Value所存放的对象就必须全部是同一种类啦。 下面给出一个详细的例子:
例子: 2) JavaBean ..... 3) Mapping文件(User.aegis.xml) 介绍:<property name="rooms" componentType="com.powerunion.ymservice.dto.Room"/> 请注意,此文件一定要放到与IHelloService.java相同的目录下面,否则会出错。 1
<?xml version="1.0" encoding="UTF-8"?>2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 5 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">6 ![]() 7 <servlet>8 <servlet-name>XFireServlet</servlet-name>9 <servlet-class>10 org.codehaus.xfire.transport.http.XFireConfigurableServlet11 </servlet-class>12 </servlet>13 ![]() 14 <servlet-mapping>15 <servlet-name>XFireServlet</servlet-name>16 <url-pattern>/servlet/XFireServlet/*</url-pattern>17 </servlet-mapping>18 ![]() 19 <servlet-mapping>20 <servlet-name>XFireServlet</servlet-name>21 <url-pattern>/services/*</url-pattern>22 </servlet-mapping>23 ![]() 24 ![]() 25 <welcome-file-list>26 <welcome-file>index.jsp</welcome-file>27 </welcome-file-list>28 </web-app>
1
package test;2 ![]() 3 import java.net.MalformedURLException;4 import java.util.ArrayList;5 import java.util.List;6 ![]() 7 import org.codehaus.xfire.XFireFactory;8 import org.codehaus.xfire.client.XFireProxyFactory;9 import org.codehaus.xfire.service.Service;10 import org.codehaus.xfire.service.binding.ObjectServiceFactory;11 ![]() 12 public class Client {13 ![]() 14 public static void main(String[] args) {15 ![]() 16 Service srvcModel = new ObjectServiceFactory()17 .create(IHelloService.class);18 XFireProxyFactory factory = new XFireProxyFactory(XFireFactory19 .newInstance().getXFire());20 ![]() 21 String helloWorldURL = "http://localhost:8080/xfiretest/services/HelloService";22 try {23 IHelloService srvc = (IHelloService) factory.create(srvcModel,24 helloWorldURL);25 System.out.println(srvc.sayHello("Robin"));26 27 User u=new User();28 u.setName("RRRRR");29 Course c=srvc.choose(u);30 System.out.println(c.getName());31 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
浏览 212 次



}
}