web services DEMO
1、myeclips新建web项目xfireDemo,new-web service project(framework中选xfire)-next-next(勾选所有包)-finish。此时xfire环境已配置好,web.xml中生成了xfire服务:
<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、右击项目,new-other搜索webservice,选中web service ->next,选择以java bean的方式,并勾选create new java bean –>填写服务名称(HelloWebService)、包名 –>finish
此时将生成一个接口类和一个实现类,并且在WebService文件夹下的service.xml将注册该服务:
<service> <name>HelloWebService</name> <serviceClass>com.hjs.xfire.IHelloWebService</serviceClass> <implementationClass> com.hjs.xfire.HelloWebServiceImpl </implementationClass> <style>wrapped</style> <use>literal</use> <scope>application</scope> </service>
表示调用HelloWebService服务时,将会执行HelloWebServiceImpl类中的程序。
3,发布Web服务
启动tomcat 后,输入http://localhost:8080/xfireDemo/services将会出现如下:
Available Services:
- HelloWebService [wsdl]
- Generated by XFire ( http://xfire.codehaus.org )
列出调用的接口。点击wsdl链接,将会打开一个xml网页,最好将此网页另存一份。至此一个HelloWebService的web服务就发布成功了。这只是服务端,接下来使用客户端调用。
方式一:
myeclips中自带了web服务的客户端浏览器,打开此浏览器,右上角选择wsdl page,在框中输入web服务地址:http://localhost:8080/xfireDemo/services/HelloWebService?wsdl点击 go按钮,左侧将显示提供的服务列表,单击所要调用的服务,然后在右侧输入该服务需要的字符串参数,点击go按钮,将会在下方显示该服务执行后的返回值。
方式二:sdk方式的客户端
编写客户端类:
/** * sdk方式客户端 * 执行此程序前,需要先启动web服务端 * */ import java.net.MalformedURLException; import org.codehaus.xfire.XFireFactory; import org.codehaus.xfire.client.Client; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire.service.Service; import org.codehaus.xfire.service.binding.ObjectServiceFactory; import org.codehaus.xfire.transport.http.CommonsHttpMessageSender; public class HelloWebServiceClient { private static IHelloWebService iHelloWebService; //Service对象 private HelloWebServiceClient(){} //私有的构造方法 public static IHelloWebService getService(String serviceURL) throws MalformedURLException{ if(iHelloWebService == null){ //创建IHelloWebService的服务 Service srvcModel = new ObjectServiceFactory().create(IHelloWebService.class); //创建xfire对象 XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire()); //调用wev服务 iHelloWebService = (IHelloWebService)factory.create(srvcModel,serviceURL); //设置客户端调用的属性 Client client = Client.getInstance(iHelloWebService); client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "300"); client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true"); client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true"); } return iHelloWebService; } public static void main(String[] args) { try { IHelloWebService service = HelloWebServiceClient.getService ("http://localhost:8080/xfireDemo/services/HelloWebService"); //通过ObjectServiceFactory、XFireProxyFactory方式来动态生成时需要把访问路径的WSDL去掉 System.out.println(service.example("你吃过中饭了吗?")); } catch (MalformedURLException e) { e.printStackTrace(); } } }
执行程序,调用web服务端。