随笔-193  评论-715  文章-1  trackbacks-0

本Blog所有内容不得随意转载,版权属于作者所有。如需转载请与作者联系( fastzch@163.com )。
未经许可的转载,本人保留一切法律权益。
一直以来,发现有某些人完全不尊重我的劳动成果,随意转载,提醒一下那些人小心哪天惹上官司。

网上关于XFire入门的教程不少,要么是讲得很简单,就像Hello World一样的程序,要么就是通过IDE集成的工具来开发的,这对于不同的人群有诸多不便,关于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、定义Web Service的接口,代码见上面的接口定义。

2、实现接口和业务逻辑,代码如下:
 1package test;
 2
 3import java.util.ArrayList;
 4import java.util.List;
 5
 6public 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两个类的代码如下:
 1package test;
 2
 3public 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
 1package test;
 2
 3public 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}

3、编写XFire要求的WebSevice定义描述文件,如下:
 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的相应目录下面。

最近有些朋友因使用Spring2.0以上版本时,会发生如下异常:
ERROR - Error initializing XFireServlet.
org.springframework.beans.factory.BeanDefinitionStoreException: Unrecognized xbean element mapping: beans in namespace http:
//xfire.codehaus.org/config/1.0
当出现如下异常时,请将此文件用如下内容替换:
 1<?xml version="1.0" encoding="UTF-8"?>
 2<beans>
 3    <service xmlns="http://xfire.codehaus.org/config/1.0"
 4        xmlns:s="http://www.springframework.org/schema/beans"
 5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 6        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 7        <name>HelloService</name>
 8        <namespace>http://test/HelloService</namespace>
 9        <serviceClass>test.IHelloService</serviceClass>
10        <implementationClass>test.HelloServiceImpl</implementationClass>
11    </service>
12</beans>
13

4、因为我们用到了List等集合类型,所以需要定义Mapping关系,文件名为:src/test/IHelloService.aegis.xml,代码如下:
1<?xml version="1.0" encoding="UTF-8"?>
2<mappings>
3    <mapping>
4        <method name="test">
5            <parameter index="0" componentType="java.lang.String" />
6            <return-type componentType="test.Course" />
7        </method>
8    </mapping>
9</mappings>
请注意,此文件一定要放到与IHelloService.java相同的目录下面,否则会出错。

5、在Web.xml中配置XFire需要用到的Servlet,代码如下:
 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.XFireConfigurableServlet
11        </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>


此时Web Service的服务端就开发完成了。
我们来看看客户端的代码吧,也很简单,如下:
 1package test;
 2
 3import java.net.MalformedURLException;
 4import java.util.ArrayList;
 5import java.util.List;
 6
 7import org.codehaus.xfire.XFireFactory;
 8import org.codehaus.xfire.client.XFireProxyFactory;
 9import org.codehaus.xfire.service.Service;
10import org.codehaus.xfire.service.binding.ObjectServiceFactory;
11
12public 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(XFireFactory
19                .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            
32            List  al=new ArrayList();
33            al.add("1212");
34            al.add("2222");
35            List t=srvc.test(al);
36            for (int i = 0; i < t.size(); i++{
37                Course co=(Course)t.get(i);
38                System.out.println(co.getName());
39            }

40            
41            
42        }
 catch (MalformedURLException e) {
43            e.printStackTrace();
44        }

45
46    }

47
48}

49

以上代码均无注释,因为都非常简单,呵呵。如有不清楚的地方,请留言!


关于使用XFire开发Web Service客户端的方法,可以参考我的另一篇文章《使用XFire开发Web Service客户端完整入门教程》。
posted on 2008-01-03 17:53 Robin's Programming World 阅读(90434) 评论(130)  编辑  收藏 所属分类: Java
评论共2页: 上一页 1 2 

评论:
# re: XFire完整入门教程 2008-01-03 23:13 | star
沙发,先顶后看!  回复  更多评论
  
# re: XFire完整入门教程 2008-01-04 09:06 | Robin's Java World
@star
谢谢支持!  回复  更多评论
  
# re: XFire完整入门教程 2008-01-04 12:10 | BeanSoft
代码行号去掉就好了。不过个人觉得用IDE生成没什么不好,Java这么多乌七八糟的开源框架,没IDE那才叫疯了呢,生活是为了活得轻松嘛,要不然也不至于都用拖拉机耕地,还没见哪个人用手耕地。  回复  更多评论
  
# re: XFire完整入门教程 2008-01-04 17:12 | Robin's Java World
@BeanSoft
能生成的当然很好,不过用IDE生成的话,XFire开发WS需要JDK5支持,而我们的项目要求我们使用JDK1.4.2,没办法,我们不能用生成。
另外,代码生成往往会让我们忽视原理,我比较喜欢知其然,更知其所以然。

PS:以后贴代码的时候再不用行号了。谢谢提醒!  回复  更多评论
  
# re: XFire完整入门教程[未登录] 2008-01-09 09:24 | johnny
我先顶后看,希望楼主上面的代码,
不是cope不完整的代码
不然我会开骂的,o(∩_∩)o...哈哈  回复  更多评论
  
# re: XFire完整入门教程 2008-01-09 10:39 | 我爱百合
先回帖再看!
之前刚在IDE里开发过,正想怎么手工创建呢?呵呵,谢谢楼主了!
有问题来问哦!
  回复  更多评论
  
# re: XFire完整入门教程 2008-01-09 11:25 | 我爱百合
不出意料,报错了!!!
org.codehaus.xfire.XFireRuntimeException: Cannot create mapping for java.util.List, unspecified component .....

先提两个有疑问的地方:
第一、services.xml文件到底放在什么地方?我放在HelloWord/META-INF/xfire下了。
其中HelloWorld是我的工程名,xfire是我在META-INF下建的一个文件夹。
第二、IHelloService.aegis.xml文件名就叫这个吗?我把它放在test包下了,和IHelloService.java在一起
我哪里写错了?  回复  更多评论
  
# re: XFire完整入门教程[未登录] 2008-01-09 16:19 | johnny
@我爱百合
你的配置出问题了?
楼主上面的东东,好像少配置了一个东东。
我这里有一个我刚写好的一个程序,如果你需要的话,我可以发给你
:-) QQ:786875783  回复  更多评论
  
# re: XFire完整入门教程 2008-01-14 11:21 | netpirate
pls use MyEclipse!  回复  更多评论
  
# re: XFire完整入门教程 2008-01-17 22:39 | Robin's Java World
@我爱百合
services.xml文件放到哪里都可以,但是要保证编译后能够在Web工程的Classes目录的META-INF/xfire目录下。

IHelloService.aegis.xml文件放在与IHelloService.java相同的目录下即可。  回复  更多评论
  
# re: XFire完整入门教程 2008-01-19 15:59 | Robin's Java World
@netpirate
If I have not myeclipse, how work?
And Myeclipse have to use above JDK5.0 .  回复  更多评论
  
# re: XFire完整入门教程 2008-02-15 14:34 | cckey
那几个servlet呢。。。。  回复  更多评论
  
# re: XFire完整入门教程 2008-02-21 10:12 | huazxing@163.com
@我爱百合
Robin的例子是IHelloService.aegis.xml,如果你是HelloWorld,你的文件名可能是IHelloWorldService.aegis.xml或其他类似名称,请根据你的接口名称命名此文件。

另外,如果你用的是JDK1.5或以上,可以直接在List中加入具体类型,比如例子中的return type: List<Course>和parameter 0 :List<String>,这样就不用mapping了
具体可以参考XFire 最新生火指南(上):
http://wiki.springside.org.cn/display/springside/XFire
2.3 配置Java-XML Binding

@Robin
感谢楼主的完整讲解  回复  更多评论
  
# re: XFire完整入门教程 2008-02-23 23:55 | Robin's Java World
@huazxing@163.com
感谢你的热情回答!
  回复  更多评论
  
# re: XFire完整入门教程 2008-02-28 11:01 | milo
请问下面的异常是由什么到导致的。

- No beans defined in application context [org.codehaus.xfire.transport.http.XFireConfigurableServlet$GenericWebApplicationContextX;hashCode=2254042]
- Commons Collections 3.x available
- Unable to locate MessageSource with name 'messageSource': using default [org.springframework.context.support.DelegatingMessageSource@1586cbd]
- Unable to locate ApplicationEventMulticaster with name 'applicationEventMulticaster': using default [org.springframework.context.event.SimpleApplicationEventMulticaster@15ad1da]
- Unable to locate ThemeSource with name 'themeSource': using default [org.springframework.ui.context.support.ResourceBundleThemeSource@18bbb61]
- Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans []; root of BeanFactory hierarchy]
- Error initializing XFireServlet.
java.lang.SecurityException: class "org.springframework.core.AttributeAccessorSupport"'s signer information does not match signer information of other classes in the same package
at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1812)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:866)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1319)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.apache.xbean.spring.context.impl.XBeanHelper.createBeanDefinitionReader(XBeanHelper.java:36)
at org.codehaus.xfire.spring.XFireConfigLoader.getXFireApplicationContext(XFireConfigLoader.java:74)
at org.codehaus.xfire.spring.XFireConfigLoader.loadContext(XFireConfigLoader.java:41)
at org.codehaus.xfire.transport.http.XFireConfigurableServlet.loadConfig(XFireConfigurableServlet.java:86)
at org.codehaus.xfire.transport.http.XFireConfigurableServlet.createXFire(XFireConfigurableServlet.java:54)
at org.codehaus.xfire.transport.http.XFireServlet.init(XFireServlet.java:45)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
  回复  更多评论
  
# re: XFire完整入门教程 2008-02-28 16:36 | Robin's Java World
@milo
你是不是做了Spring的整合?
No beans defined in application context
根据这句的提示,应该是说你用到了某一个bean,但是并没有在Spring中定义。
  回复  更多评论
  
# re: XFire完整入门教程 2008-02-28 18:23 | milo
我应该没有使用到Spring,我开始怀疑XFire的库和其他的库有冲突,于是我就把我没用到的库都删掉了,可是异常更多了。  回复  更多评论
  
# re: XFire完整入门教程 2008-02-28 22:18 | milo
robin谢谢了。问题已经解决,是第三方的jar有冲突了:dom4j中的jaxen与XFire中的jaxen包冲突了!  回复  更多评论
  
# re: XFire完整入门教程 2008-03-06 17:12 | passenger
webservice 一定要开发一个客户端程序吗?如果这样,则需在每个客户机上安装一个客户程序岂不很麻烦?  回复  更多评论
  
# re: XFire完整入门教程 2008-03-19 14:38 | Robin's Java World
@passenger
不好意思,说句不太客气的话,你可能需要更多应用软件架构与部署的更多知识,也需要更好的理解C/S,B/S的更多相关知识。
通常,是否需要在客户机上装一个客户程序是取决于你是用C/S还是用B/S模式的。当然,你也可以把任何与Web Service交互的机器当作是客户端,这样的话,那就是每个机器上都要装客户端程序了。  回复  更多评论
  
# re: XFire完整入门教程 2008-03-23 22:51 | yame
我完全按照上面的完整教程做下来,服务器端部署服务都正常,客房歒代码运行出现如下错误,请问这是什么原因?
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/Credentials
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.getConstructor(Unknown Source)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:108)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.sayHello(Unknown Source)
at client.Client.main(Client.java:25)  回复  更多评论
  
# re: XFire完整入门教程 2008-03-24 01:55 | Robin's Java World
@yame
根据你贴上来的Log来看,是属于没有找到Credentials这个类所致。
通常出现这样的错误有两种情况:
1,没有依赖的包,或者包不在classpath下
2,包冲突
请根据具体情况来判断,检查环境配置是否正确。  回复  更多评论
  
# re: XFire完整入门教程[未登录] 2008-03-24 08:57 | zym
使用xfire做webservice,在浏览器中可以访问到wsdl,用MyEclipse的Web Service Explore 调用服务出现如下错误,请教大概是什么原因导致的?
[ERROR] http-8888-Processor24 2008-03-24 08:55:02,062 org.codehaus.xfire.handler.DefaultFaultHandler - Fault occurred!
java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54)
at org.codehaus.xfire.service.invoker.ObjectInvoker.invoke(ObjectInvoker.java:45)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:271)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:84)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:301)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:130)
at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)  回复  更多评论
  
# re: XFire完整入门教程 2008-03-24 17:13 | wudayin
xfire生成的服务默认是不是使用SOAP1.1报文?
如何配置才能让xfire生成的服务使用SOAP1.2报文的设置内容?  回复  更多评论
  
# re: XFire完整入门教程 2008-03-30 16:23 | Robin's Java World
@wudayin
xfire默认是采用SOAP1.1的报文。
如果你想使用SOAP1.2的报文的话,可以采用bindings标签来进行设置。
也可以与Spring结合来进行配置,相关的配置你可以参考官方文档。  回复  更多评论
  
# re: XFire完整入门教程 2008-03-30 16:24 | Robin's Java World
@zym
出现你这样问题的原因应该是包的配置不对,或者是程序中有哪里没有按文章中所说的来。怀疑是你客户端所传对象不正确之类。  回复  更多评论
  
# re: XFire完整入门教程 2008-07-22 16:47 | ponpon
你好,我是用MyEclipse来开发的,请问用webservice怎么样从客户端传递List参数给服务器端吗(在另外一个JavaProject工程里面)?
比如我在服务器上的函数是public String getList(List list){},其中这List装的对象是User对象,我用MyEclipse生成客户端时自动生成了一个ArrayOfUser类,调用service.getList(),时里面提示要的参数不是List型,而是ArrayOfUser型 ,该怎么封装一下呢?谢谢
望回信:javapon@163.com  回复  更多评论
  
# re: XFire完整入门教程 2008-07-23 15:17 | Robin's Java World
@ponpon
在另一个工程里面要传List<User>这样的参数,你可以把服务端的User对象打包过来。然后import这个对象即可呀。  回复  更多评论
  
# re: XFire完整入门教程 2008-07-30 23:26 | young
蛮不错的文章.对于像我们这样初学WEB SERVICES的.
有2个疑问请教一下:
1.像客户端的话明显是不知道User和Course结构的,一般的做法是怎么样让客户端去知道User和Course结构的?

2.如果Course或User也是要调用服务端进行实现的话,又该如何处理?  回复  更多评论
  
# re: XFire完整入门教程 2008-07-31 15:48 | Robin's Java World
@young
回答你的两个问题:
1,客户端很明显是可以通过WSDL来知道User,Course等对象的结构的。比如,你用一些工具来生成客户端时,可以自动生成这些对象。
2,Course,User等对象客户端有定义,所以不存在你说的问题。  回复  更多评论
  
评论共2页: 上一页 1 2 

只有注册用户登录后才能发表评论。


网站导航: