`
zhuyuanxiang
  • 浏览: 127102 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

webservice-之使用xfire开发(转自勇哥的BLOG)

阅读更多

Myeclipse5.X 支持xfire支持的非常棒。这里讲解一个简单的例子,此文章为引用文章,仅做保留,供学习参考使用。<!----><o:p></o:p>

一、服务端程序开发<o:p></o:p>

1 、首先建立一个web service工程 <o:p></o:p>

<!----> <v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"> </v:stroke> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> </v:f> <v:f eqn="sum @0 1 0"> </v:f> <v:f eqn="sum 0 0 @1"> </v:f> <v:f eqn="prod @2 1 2"> </v:f> <v:f eqn="prod @3 21600 pixelWidth"> </v:f> <v:f eqn="prod @3 21600 pixelHeight"> </v:f> <v:f eqn="sum @0 0 1"> </v:f> <v:f eqn="prod @6 1 2"> </v:f> <v:f eqn="prod @7 21600 pixelWidth"> </v:f> <v:f eqn="sum @8 21600 0"> </v:f> <v:f eqn="prod @7 21600 pixelHeight"> </v:f> <v:f eqn="sum @10 21600 0"> </v:f> </v:formulas> <v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"> </v:path> <o:lock aspectratio="t" v:ext="edit"> </o:lock> </v:shapetype> <v:shape id="_x0000_i1025" style="WIDTH: 265.5pt; HEIGHT: 321pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///D:\Winbak\Temp\msohtml1\01\clip_image001.gif" o:href="/images/blogjava_net/killme2008/new_wizard1.gif"> </v:imagedata> </v:shape> <o:p> </o:p>

<v:shape id="_x0000_i1026" style="WIDTH: 328.5pt; HEIGHT: 312pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image002.png"> </v:imagedata> </v:shape> <o:p> </o:p>

<v:shape id="_x0000_i1027" style="WIDTH: 345pt; HEIGHT: 308.25pt" type="#_x0000_t75" alt=""> <v:imagedata src="file:///D:\Winbak\Temp\msohtml1\01\clip_image004.gif" o:href="/images/blogjava_net/killme2008/new_wizard3.gif"> </v:imagedata> </v:shape> <o:p> </o:p>

<v:shape id="_x0000_i1028" style="WIDTH: 339.75pt; HEIGHT: 276pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image005.png"> </v:imagedata> </v:shape> <o:p> </o:p>

点击finish之后,myeclipse自动帮你生成services.xml以及web应用目录结构,其中的services.xml是你导出服务的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的:<o:p></o:p>

Servlet 代码<o:p></o:p>

<servlet>  <o:p></o:p>

 <servlet-name>XFireServlet</servlet-name>   <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>   <o:p> </o:p>

 <load-on-startup>0</load-on-startup>  <o:p></o:p>

</servlet>  <o:p></o:p>

<servlet-mapping>  <o:p></o:p>

 <servlet-name>XFireServlet</servlet-name>  <o:p></o:p>

 <url-pattern>/services/*</url-pattern>  <o:p></o:p>

</servlet-mapping>  <o:p></o:p>

  <o:p> </o:p>

2 、接下来,现在编写要导出的pojo ,首先是接口:<o:p></o:p>

<v:shape id="_x0000_i1029" style="WIDTH: 252.75pt; HEIGHT: 383.25pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image007.png"> </v:imagedata> </v:shape> <o:p> </o:p>

过程:File>New>Other>MyEclipse>Web Service<o:p></o:p>

<v:shape id="_x0000_i1030" style="WIDTH: 347.25pt; HEIGHT: 237.75pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image009.png"> </v:imagedata> </v:shape> <o:p> </o:p>

选择:Create web service from Java bean,把Create new javabean也勾上<o:p></o:p>

3 、在导航页面中,输入<o:p></o:p>

web service name:HelloWorldTest<o:p></o:p>

java package : services<o:p></o:p>

services Interface : HelloWorldTestRemote<o:p></o:p>

services impl.class : HelloWorldTestBean<o:p></o:p>

<v:shape id="_x0000_i1031" style="WIDTH: 347.25pt; HEIGHT: 333pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image011.png"> </v:imagedata> </v:shape> <o:p> </o:p>

其他的默认,点finish<o:p></o:p>

最后可以看到Web Services   下面的services.xml的内容如下<o:p></o:p>

<?xml version="1.0" encoding="UTF-8"?><o:p></o:p>

<beans xmlns="http://xfire.codehaus.org/config/1.0"><o:p></o:p>

    <service><o:p></o:p>

        <name>HelloWorldTest</name><o:p></o:p>

        <serviceClass>services.HelloWorldTestRemote</serviceClass>      <implementationClass>services.HelloWorldTestBean</implementationClass><o:p></o:p>

        <style>wrapped</style><o:p></o:p>

        <use>literal</use><o:p></o:p>

        <scope>application</scope><o:p></o:p>

    </service><o:p></o:p>

</beans><o:p></o:p>

4 services包中的文件 <o:p></o:p>

HelloWorldTestRemote.java<o:p></o:p>

-----------------------------------------------<o:p></o:p>

package services;<o:p></o:p>

public interface HelloWorldTestRemote <o:p></o:p>

{   <o:p></o:p>

    public String example(String message);  <o:p></o:p>

}<o:p></o:p>

----------------------------------------------------------<o:p></o:p>

HelloWorldTestImpl.java<o:p></o:p>

----------------------------------------------------<o:p></o:p>

package services;<o:p></o:p>

public class HelloWorldTestBean implements HelloWorldTestRemote <o:p></o:p>

{<o:p></o:p>

    public String example(String message) <o:p></o:p>

    {<o:p></o:p>

        return "Hello:"+message;<o:p></o:p>

    }   <o:p></o:p>

}<o:p></o:p>

------------------------------------------------------------<o:p></o:p>

到此为止webServices编码工作完成,现在开始部署到tomcat这里省略。<o:p></o:p>

部署好后可以测试下:<o:p></o:p>

1)查看可用的服务<o:p></o:p>

http://localhost:8080/HelloWorld/services <o:p> </o:p>

2)查看wsdl<o:p></o:p>

http://localhost:8080/HelloWorld/services/HelloWorldTest?wsdl <o:p> </o:p>

<o:p> </o:p>

/////////////////////////////////////////////////////////////////////////////<o:p></o:p>

/////////////////////////////////////////////////////////////////////////////<o:p></o:p>

二、客户端应用程序开发<o:p></o:p>

1 、新建工程useWebService,并且建立clientservices<o:p></o:p>

2 bulid path中导入,XFire 1.1 core librariesXFire 1.1 HTTP client libraries.<o:p></o:p>

<v:shape id="_x0000_i1032" style="WIDTH: 393.75pt; HEIGHT: 320.25pt" type="#_x0000_t75"> <v:imagedata o:title="" src="file:///D:\Winbak\Temp\msohtml1\01\clip_image013.png"> </v:imagedata> </v:shape> <o:p> </o:p>

SayHello.java<o:p></o:p>

----------------------------------------<o:p></o:p>

package client;<o:p></o:p>

import java.net.MalformedURLException;<o:p></o:p>

import org.codehaus.xfire.XFireFactory;<o:p></o:p>

import org.codehaus.xfire.client.XFireProxyFactory;<o:p></o:p>

import org.codehaus.xfire.service.Service;<o:p></o:p>

import org.codehaus.xfire.service.binding.ObjectServiceFactory;<o:p></o:p>

import services.HelloWorldTestRemote;<o:p></o:p>

public class SayHello <o:p></o:p>

{<o:p></o:p>

    public String say(String name) <o:p></o:p>

    {<o:p></o:p>

        String result = "";<o:p></o:p>

Service srvcModel = new ObjectServiceFactory().create(HelloWorldTestRemote.class);<o:p></o:p>

        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());<o:p></o:p>

        String helloWorldURL = "http://localhost:8080/HelloWorld/services/HelloWorldTest";<o:p></o:p>

        try <o:p></o:p>

        {<o:p></o:p>

            HelloWorldTestRemote srvc = (HelloWorldTestRemote) factory.create(srvcModel, helloWorldURL);<o:p></o:p>

            result = srvc.example(name);<o:p></o:p>

            System.out.println(result);<o:p></o:p>

        } <o:p></o:p>

        catch (MalformedURLException e) <o:p></o:p>

        {<o:p></o:p>

            e.printStackTrace();<o:p></o:p>

        } finally <o:p></o:p>

        {<o:p></o:p>

            return result;<o:p></o:p>

        }<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

--------------------------------------------------------------<o:p></o:p>

HelloWorldTestRemote.java<o:p></o:p>

---------------------------------------------------------------<o:p></o:p>

package services;<o:p></o:p>

<o:p> </o:p>

public interface  HelloWorldTestRemote <o:p></o:p>

{<o:p></o:p>

    public String example(String message);<o:p></o:p>

}-----------------------------------------------------------------<o:p></o:p>

创建index.jspbody部分<o:p></o:p>

-----------------------<o:p></o:p>

<form name="form1" action="say.jsp" method="POST"><o:p></o:p>

您的大名:<input name="userName" type="text"/> <input value="提交" type="submit"/> <o:p></o:p>

</form><o:p></o:p>

-------------------------------<o:p></o:p>

创建say.jsp,body部分<o:p></o:p>

----------------------------------------------------------------<o:p></o:p>

<%<o:p></o:p>

String name=(String)request.getParameter("userName"); <o:p></o:p>

String result=new SayHello().say(name);<o:p></o:p>

out.print(result);<o:p></o:p>

%><o:p></o:p>

webService 远程调用结果: <%=result %><o:p></o:p>

------------------------------------------------------------------------<o:p></o:p>

运行下测试!OK<o:p></o:p>

分享到:
评论
1 楼 zylucky 2009-06-25  
排版太乱了。。

相关推荐

Global site tag (gtag.js) - Google Analytics