Myeclipse5.X
支持xfire支持的非常棒。這里講解一個簡單的例子,此文章為引用文章,僅做保留,供學習參考使用。
一、服務端程序開發
1
、首先建立一個web service工程
:
點擊finish之后,myeclipse自動幫你生成services.xml以及web應用目錄結構,其中的services.xml是你導出服務的配置文件,注意在WEB-INF/web.xml文件中配置了xfire自己的:
Servlet
代碼
<servlet>?
?<servlet-name>XFireServlet</servlet-name>??
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
?
?<load-on-startup>0</load-on-startup>?
</servlet>?
<servlet-mapping>?
?<servlet-name>XFireServlet</servlet-name>?
?<url-pattern>/services/*</url-pattern>?
</servlet-mapping>?
?
2
、接下來,現在編寫要導出的pojo類
,首先是接口:
過程:File>New>Other>MyEclipse>Web Service
選擇:Create web service from Java bean,把Create new javabean也勾上
3
、在導航頁面中,輸入
web service name:HelloWorldTest
java package : services
services Interface : HelloWorldTestRemote
services impl.class :
HelloWorldTestBean
其他的默認,點finish
最后可以看到Web Services?? 下面的services.xml的內容如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
??? <service>
??????? <name>HelloWorldTest</name>
??????? <serviceClass>services.HelloWorldTestRemote</serviceClass>? ??? <implementationClass>services.HelloWorldTestBean</implementationClass>
??????? <style>wrapped</style>
??????? <use>literal</use>
??????? <scope>application</scope>
??? </service>
</beans>
4
、services包中的文件
:
HelloWorldTestRemote.java
-----------------------------------------------
package services;
public interface HelloWorldTestRemote
{??
??? public String example(String message);?
}
----------------------------------------------------------
HelloWorldTestImpl.java
----------------------------------------------------
package services;
public class HelloWorldTestBean implements HelloWorldTestRemote
{
??? public String example(String message)
??? {
??????? return "Hello:"+message;
??? }??
}
------------------------------------------------------------
到此為止webServices編碼工作完成,現在開始部署到tomcat這里省略。
部署好后可以測試下:
(1)查看可用的服務
http://localhost:8080/HelloWorld/services
(2)查看wsdl
http://localhost:8080/HelloWorld/services/HelloWorldTest?wsdl
?
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
二、客戶端應用程序開發
1
、新建工程useWebService,并且建立client和services包
2
、bulid path中導入,XFire 1.1 core libraries和XFire 1.1 HTTP client libraries.
SayHello.java
----------------------------------------
package client;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import services.HelloWorldTestRemote;
public class SayHello
{
??? public String say(String name)
??? {
??????? String result = "";
Service srvcModel = new ObjectServiceFactory().create(HelloWorldTestRemote.class);
???????
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
???????
String helloWorldURL = "http://localhost:8080/HelloWorld/services/HelloWorldTest";
??????? try
??????? {
???????????
HelloWorldTestRemote srvc = (HelloWorldTestRemote) factory.create(srvcModel, helloWorldURL);
??????????? result = srvc.example(name);
??????????? System.out.println(result);
??????? }
??????? catch (MalformedURLException e)
??????? {
??????????? e.printStackTrace();
??????? } finally
??????? {
??????????? return result;
??????? }
??? }
}
--------------------------------------------------------------
HelloWorldTestRemote.java
---------------------------------------------------------------
package services;
?
public interface? HelloWorldTestRemote
{
??? public String example(String message);
}-----------------------------------------------------------------
創建index.jsp,body部分
-----------------------
<form name="form1" action="say.jsp" method="POST">
您的大名:<input name="userName" type="text"/> <input value="提交" type="submit"/>
</form>
-------------------------------
創建say.jsp,body部分
----------------------------------------------------------------
<%
String name=(String)request.getParameter("userName");
String result=new SayHello().say(name);
out.print(result);
%>
webService
遠程調用結果: <%=result %>
------------------------------------------------------------------------
運行下測試!OK