webService client

    hi,all;早上刚写了篇。现在继续;主要说的是webservice client;随便google一下。就能看到大把大把的server端的代码;我就仔细的说下client的问题吧。我自己所面临的问题。从啥也不懂的时候到现在这个时候。把问题仔细说一下哈;

     首先附加:wsdl2java用法:

wsdl2java -p com -d src  -client url?WSDL 
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
之后你可以到你生成的目录里面去找相应的代码;你会发现有很多的java文件;你有两种方式能够访问服务端的接口;你使用哪一种就代表着哪些java是有用的;
第一种:直接在application配置相应的bean。类似于:    
   <bean id="client" class="server.webservice.IApplication"
          factory-bean="clientFactory" factory-method="create" />
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
        <property name="serviceClass"  value="server.webservice.IApplication" />
        <property name="address" value="http://ip:port/Api"/>
    </bean> 

这个时候interface IApplication类似的java是非常有用的。你只需要再你的action里面写入

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    IApplication port = (IApplication) context.getBean("client",IApplication.class);

你就可以通过port去访问相应的方法了。例如:port.withdraw();这是不是很简单呢。。。是的。的确是;

第二种:你可以找到有个类是以_client结尾的类名;里面有个main方法也是进行相应的调取interface接口的方法;有个变量WSDL_LOCATION,记得要写你要访问的那个api哦;结束了。。。。

    最后说一种;可能有个api给你,你可能只是单纯的测试一下这些端口是否能通。你生成客户端代码时-p com.viking.application;但是当你开发的工程需要调用server端接口的时候,为了省力。直接将生成的那些代码copy到你的工程下时。这时你会发现一个问题,在测试的工程中,你能够访问,但是放到你的工程中就会报异常。你经过各种测试,都不行。这个时候我就要告诉你了。别偷懒了。还是重新生成一次代码。这时存放的工程名一定要与你开发工程的名相同才行。不然。永远都会报找不到相关类的异常;

    当时可能很有激情。现在寥寥数语。感觉没什么东西可讲了。下次一定在发现问题,解决问题之后立马写下;不然。没感觉;谢谢大家;

猜你喜欢

转载自syc--syl.iteye.com/blog/1869735
今日推荐