webservice Endpoint和JaxWsProxyFactoryBean实现客户端调用服务端接口

参考https://blog.csdn.net/c99463904/article/details/76018436

服务端

  1.编写SEI(Service Endpoint Interface),SEI在webservice中称为portType,在java中就是普通接口

public interface ICameraService {
    public void test();
}

  2. 编写SEI实现类,此类作为webservice提供服务类

@WebService///@WebService表示该类是一个服务类,需要发布其中的public的方法
@Service("CameraServiceImpl")//Spring mvc 纳入容器管理
public class CameraServiceImpl implements ICameraService {
    @Override
	public void test() {
    System.out.print("asada");
}
}

   3.发布服务,Endpoint类发布服务,publish方法,两个参数:1.服务地址;2.服务实现类

import javax.xml.ws.Endpoint;

import com.ctfo.spring.SpringInit;

public class Start {
	public static void main(String[] args) {
		Endpoint.publish("http://192.168.1.107:9010/CameraServiceImpl",SpringInit.ctx.getBean("CameraServiceImpl"));
		System.out.println("同步视频数据,视频巡检数据已启动...........");
	}
}
启动容器,获取bean

public class SpringInit {
	public static AbstractApplicationContext ctx = null;
	
	static{
		ctx  = new ClassPathXmlApplicationContext("com/applicationContext.xml");
	}
	
}

   4. 测试服务是否发布成功,通过阅读wsdl,确定客户端调用的接口、方法、参数和返回值存在,证明服务发布成功 //我们在浏览器输入 http://192.168.1.107:9010/CameraServiceImpl?wsdl 来获取wsdl文件进行阅读 //wsdl,是以XML文件形式来描述WebService的”说明书”,有了说明书,我们才可以知道如何使用或是调用这个服务. 

客户端:

客户端方式:

1.直接编写服务端接收程序,需要有服务端同名的接口类

   客户端创建一个ICameraService接口,然后如下:

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public static ICameraService ceraetWebServiceConnection(){
		JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
		svr.setServiceClass(ICameraService.class);
		svr.setAddress("http://192.168.1.107:9010/CameraServiceImpl");
		ICameraService is = (ICameraService)svr.create();
		return is;
	}

2.用jdk工具生成java客户端代码

在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方法。

1)首先创建一个server空项目

     用cmd命令找到项目所在路径下的src然后

     cmd 命令:wsimport -s . http://192.168.1.102:9010/TestPublishServerImpl?wsdl  就能直接在src这个路径下生成代码。

     cmd命令    dir 显示当前所有文件   cd  转到指定文件  直接输入  d: 跳转到D盘 

     如果cmd提示没有wsimport命令 需要在cmd中设置一下java环境变量,把电脑设置的环境变量路径复制到cmd中运行一遍就好

 webservice Endpoint和JaxWsProxyFactoryBean实现客户端调用服务端接口_第1张图片

2)编写客户端

public class testClient {

  public static void main(String[] args) {
	        //创建service
	       CameraServiceImplService service=new CameraServiceImplService ();  
	        //获取代理对象
	        CameraServiceImpl impl=service.getPort(CameraServiceImpl.class); 
	        //获取服务端方法
	         String word=impl.test();
	        System.out.println(word);
	    }

}

 

你可能感兴趣的:(java,web)