WebService简单使用
Posted CodeZLei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebService简单使用相关的知识,希望对你有一定的参考价值。
一.WebService发布服务方式
方式一:使用jre自己提供的方式 jax-ws
1)在类上或者相应类的接口或者抽象类上添加注解@WebService
2)发布服务 Endpoint.publish("http://127.0.0.1:8800/hello", new HelloServiceImpl());
3) http://127.0.0.1:8800/hello?wsdl 可以正常显示说明发布服务成功
方式二:使用CXF的方式发布服务
1)需要引入相应的jar包
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>2.2.3</version> </dependency>
2)在类上或者相应类的接口或者抽象类上添加注解@WebService
3)发布服务 Endpoint.publish("http://127.0.0.1:8800/hello", new HelloServiceImpl());
4) http://127.0.0.1:8800/hello?wsdl 可以正常显示说明发布服务成功 和 方式一 生成的wsdl文档不太一样了
二.WebService调用服务方式
方式一:使用jre自己提供的方式 jax-ws 可以针对任何情况
a.选择新建 Web Service Client
b.输入wsdl地址并点击 Finish
c.调用生成的代码
1.使用代理的方式
WSServerProxy wsServerProxy = new WSServerProxy(); String execBusinessMethod = wsServerProxy.execBusinessMethod("nice", "123213"); System.out.println(execBusinessMethod);
2.使用接口方式
//注意接口要和服务端一致的注解@WebService@WebParam.... URL url = new URL("http://127.0.0.1:8899/zl?wsdl"); //服务的wsdl文档地址 QName qname=new QName("http://zl.com/","WSServerService"); //wsdl上的targetNamespace,和后面的name的值 Service service=Service.create(url, qname); WSServer ms=service.getPort(WSServer.class); String hello = ms.execBusinessMethod("good", "123123"); System.out.println(hello);
方式二:使用axis方式调用 只能是CXF的提供服务的方式
a.需要引用的jar
<!-- 引用的jar包 --> <!-- https://mvnrepository.com/artifact/axis/axis --> <dependency> <groupId>axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> <dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.5.5</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.activation/activation --> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1</version> </dependency>
b.调用服务代码 注意包不要引错
import java.net.MalformedURLException; import java.net.URL; import java.rmi.RemoteException; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call; import org.apache.axis.client.Service; //new 一个服务 Service sv = new Service(); //创建一个call对象 Call call = (Call) sv.createCall(); //设置要调用的接口地址 call.setTargetEndpointAddress(new URL("http://127.0.0.1:8899/hello")); //设置要调用的接口方法 call.setOperationName(new QName("getHello")); //设置参数 第二个参数表示String类型,第三个参数表示入参 call.addParameter("str", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN); //返回参数类型 call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING); //开始调用方法并返回相应数据信息,以xml格式的字符串返回,也可以json格式主要看对方用什么方式返回 Object result = call.invoke(new Object[]{"nice"}); System.out.println(result);//打印字符串
以上是关于WebService简单使用的主要内容,如果未能解决你的问题,请参考以下文章
java调用c#的webservice,如何传递DateTime