WebService学习总结(三)--WebServic发布

WebService 专栏收录该内容
5 篇文章 1 订阅

一、简单的Webservice发布

在实际的工作中自己发布Webservice的情况还是很小的,所以在这里简单的介绍两种发布Webservice

2.1 原生态JDK定义

1.编写服务接口

@WebService  //WebService注解
public interface IHelloWorld {
	public String getHellow( String name);
}
2.服务接口实现

@WebService   //WebService注解
public class HelloWorld implements IHelloWorld {
	public String getHellow(String name) {
		String str="你好,世界;你好,"+name;
		return str;
	}
	
}
3.暴露服务

public static void main(String[] args) {
	String address="http://localhost:8000/hellow";
	HelloWorld hellow = new HelloWorld();
	Endpoint.publish(address, hellow);
	System.out.println("wsdl地址:"+address+"?wsdl");
}

4.运行程序,在浏览器输入http://localhost:8000/hellw?wsdl   看到生成的wsdl即发布成功,如下图


我们可以看到,生成的ws服务名称是在原来的类后面有加了个Service而已,服务类型名是在原来的类后面加了个Port,包括

参数默认为arg0,返回值为return 等等,这些都能从wsdl文件中看的出来,具体想知道每个节点的意思可以问度娘,在调用服务时

需要哪些参数可以来wsdl查找即可,个人认为wsdl没必要全部看懂,简单能看懂就行,通过这个wsdl生成的Java代码中的类名自然

也就是默认的了,如果我们想要修改这些默认的配置,则需要在编写ws的时候通过注解来设置一下。


2.2 CXF发布Webservice与修改wsdl配置

1.编写服务接口

@WebService  //WebService注解
public interface IHelloWorld {
	public String getHellow( String name);
	public String getHiiiii(String name);
}
2.服务接口实现

@WebService(
		endpointInterface="com.web.hellow.IHelloWorld",  //指的是对外提供服务的接口(报名.接口名)
		name="hellow1", // 服务实现类的名称
		portName="Service1",  // 默认在发布的服务实现者的名称后面添加Service
		serviceName="port1"  // 服务类型的名称: 默认在 发布的服务实现者(MyWebService) 后面添加 port
		//targetNamespace 修改此属性会造成wsdl失效,请谨慎修改,至于原因我还在研究
		//targetNamespace="com.aa.test"   发布ws服务的命名空间,此空间默认为当前服务包路径的 "倒写"
		)   
public class HelloWorld implements IHelloWorld {
	
	@WebMethod(exclude=true)  // 默认public方法可以发布为ws服务, 如果要排除则配置  exclude=true,就是不对外暴露此方法
	public String getHellow( String name) {
		String str="你好,世界;你好,"+name;
		return str;
	}
	
	//可以指定wsdl中的方法名,参数名和返回值
	@WebMethod(operationName="seyHollow")
	public @WebResult(name="result")String getHiiiii(@WebParam(name="name1")String name) {
		// TODO Auto-generated method stub
		return null;
	}
	
}


3.暴露服务

public static void main(String args[]) throws Exception {
	System.out.println("web service start");
    IHelloWorld implementor = new HelloWorld();
    String address = "http://localhost:8000/ws";


    JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
    factoryBean.setAddress(address); // 设置暴露地址
    factoryBean.setServiceClass(HelloWorld.class); // 接口类
    factoryBean.setServiceBean(implementor); // 设置实现类
    factoryBean.create(); // 创建webservice接口
    System.out.println("web service started");
    System.out.println("请求地址为为:" + address + "?wsdl");
}
4.运行程序,在浏览器输入http://localhost:8000/ws?WSDL   看到生成的wsdl即修改成功


注:以上为简单发布一个Webservice,注意,返回值和参数不能为实体类或者map等,如果有需要请参考之后的文章





  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

萌B

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值