webService总结(一)——使用CXF发布和调用webService(不使用Spring)

CXF和Axis2是两个比较流行的webService框架,接下来我会写几篇博客简单介绍如何使用这两种框架。首先,先简单介绍一下CXF的使用。

CXF发布webService有多种方法,这里我介绍三种:

1、不使用Spring,CXF自动发布webService

2、不使用Spring,CXF手动发布webService

3、使用Spring + CXF发布webService

这篇博客以实例介绍第一种方法——不使用Spring,CXF自动发布webService。

服务端:

目录结构如下:

IHelloWorldServer代码:

<span style="font-family:Microsoft YaHei;font-size:18px;">package com.test.server;

public interface IHelloWorldServer {
	public String sayHello(String username);
}</span>

HelloWorldServerImp代码:

<span style="font-family:Microsoft YaHei;font-size:18px;">package com.test.server;

public class HelloWorldServerImp implements IHelloWorldServer {

	@Override
	public String sayHello(String username) {
		return username+" : HelloWorld";
	}
}</span>

这两个是最最简单的java类。

WebServlet代码:

<span style="font-family:Microsoft YaHei;font-size:18px;">package com.test.server;

import javax.servlet.ServletConfig;

import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.frontend.ServerFactoryBean;
import org.apache.cxf.transport.servlet.CXFNonSpringServlet;

public class WebServlet extends CXFNonSpringServlet {
//	private static final String SERVICE_SUFFIX = "";
	private static final long serialVersionUID = 1L;  

    @Override
    protected void loadBus(ServletConfig servletConfig) {
        super.loadBus(servletConfig);  

        Bus bus = getBus();
        BusFactory.setDefaultBus(bus);
        HelloWorldServerImp helloWorld = new HelloWorldServerImp();//实现类  

        ServerFactoryBean serverFactoryBean = new ServerFactoryBean(); //server工厂
        serverFactoryBean.setServiceClass(IHelloWorldServer.class);// 接口类
        serverFactoryBean.setAddress("/helloWorld"); //服务请求路径
        serverFactoryBean.setServiceBean(helloWorld);
        serverFactoryBean.create();
    }
}</span>

这个Servlet用于发布webService,当程序部署后,容器会自动调用这里面的方法。

Web.xml文件

<span style="font-family:Microsoft YaHei;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>cxf_demo</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<display-name>cxf_demo</display-name>

	<servlet>
		<servlet-name>CXFServlet</servlet-name>
		<servlet-class>com.test.server.WebServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/ws/*</url-pattern>
	</servlet-mapping>
</web-app></span>

将上述项目发布到Tomcat中,他会自动发布webService,输入网址:http://localhost:8080/cxf_demo_noSpring_1/ws,即可看到发布好的webService,输入网址:http://localhost:8080/cxf_demo_noSpring_1/ws/helloWorld?wsdl,查看wsdl文件,能正常显示,说明webService发布成功。

客户端:

HelloWorldClient代码:

<span style="font-family:Microsoft YaHei;font-size:18px;">package com.test.client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class HelloWorldClient {
	public static void main(String[] args) {
		JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
		org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:8080/cxf_demo_noSpring_1/ws/helloWorld?wsdl");
                Object[] objects;
		try {
			objects = client.invoke("sayHello", "haitao");
			//输出调用结果
			System.out.println(objects[0].toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
</span>

run之后,结果如下:

至此,第一种方式介绍完毕,接下来的博客我会继续介绍其他方法。

时间: 2024-10-15 22:34:27

webService总结(一)——使用CXF发布和调用webService(不使用Spring)的相关文章

使用CXF发布和调用webservice之HelloWorld入门

依赖的JAR     cxf-2.2.10.jar     jetty-6.1.21.jar     jetty-util-6.1.21.jar     servlet-2_5-api.jar     wsdl4j-1.6.2.jar     XmlSchema-1.4.5.jar 创建一个普通的Java工程即可 创建webservice接口 package com.cxf.interfaces; import javax.jws.WebParam; import javax.jws.WebSe

spring boot整合cxf发布和调用webservice

一.前言 说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是一些特有或相对老旧的系统依然使用了传统的soap web service,例如银行.航空公司的机票查询接口等.本博客主要讲解得是spring boot整合cxf发布webservice服务和spring boot整合cxf客户端调用webservice服务本案例使用maven方式二.编码核心文件清单1.pom.xml <?xml version="1.0"

webService总结(四)——使用axis2发布和调用webService

准备工作 Axis2 官网 http://axis.apache.org/  下载axis2相关资料 其中 axis2-1.6.2-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.6.2-war.zip文件用于将WebService发布到Web容器中.最后两个是axis2在eclipse中的插件. 大概说说这几个文件如何使用. 1.解压axis2-1.6.2-bin.zip到任意目录.然后在eclipse中按下图配置. 2.将axis2-1.6.2-war.zip文件解

java中使用axis发布和调用webService

工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService. 需要的jar包: 发布webService: package com.xzh.webservice; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWebService { public String hello(S

webService总结(一)——使用CXF公布和调用webService(不使用Spring)

CXF和Axis2是两个比較流行的webService框架,接下来我会写几篇博客简介怎样使用这两种框架. 首先,先简介一下CXF的使用. CXF公布webService有多种方法.这里我介绍三种: 1.不使用Spring.CXF自己主动公布webService 2.不使用Spring,CXF手动公布webService 3.使用Spring + CXF公布webService 这篇博客以实例介绍第一种方法--不使用Spring,CXF自己主动公布webService. 服务端: 文件夹结构例如以

WebService学习笔记-使用CXF发布Webservice

WeB项目结构如图 User.java实体类 public class User { private String username; private String description; //... } HelloWorld.java接口 @WebService public interface HelloWorld { String sayHi(@WebParam(name="text")String text);     String sayHiToUser(User user

[PHP]php发布和调用Webservice接口的案例

分两步走:1.服务端发布接口;2.客户端调用方法 1.服务端发布接口: 需要nusoap工具,下载地址:http://sourceforge.net/projects/nusoap/ 下载完和要发布接口的php文件放在同一目录下. 服务端发布接口soapserver.php例子: <?phprequire_once('./lib/nusoap.php');$soap = new soap_server; $soap->soap_defencoding = 'UTF-8';$soap->d

WS的发布与调用

https://www.cnblogs.com/domi22/p/8094517.html spring 集成cxf 第二弹(经过测试)以xml格式进行数据交互 https://blog.csdn.net/weixin_37852133/article/details/68124447 JAVA解析xml的四种方式比较 https://www.cnblogs.com/lq147760524/p/6725110.html dom4j解析xml字符串实例 https://www.cnblogs.co

使用cxf发布webservice总结

一.概念 1.什么是webservice Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. 2.wsdl 网络服务描述语言是一个用来描述Web服务和说明如何与Web服务通信的XML(标准通用标记语言的子集)语言.为用户提供详细的接口说明书. 3.soap 简单对象访问协议是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子