摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互。
cxf:是java主流的WebService实现框架。
接下来开始 使用cxf开发WebService服务器端接口
1.新建一个maven项目:
2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如:
3. 首先新建接口,HelloWorld.java:
package com.wh.webservice; import javax.jws.WebService; @WebService public interface HelloWorld { public String say(String str); }
4. 然后新建实现类,HelloWorldImpl.java:
package com.wh.webservice.impl; import javax.jws.WebService; import com.wh.webservice.HelloWorld; @WebService public class HelloWorldImpl implements HelloWorld { public String say(String str) { return "Hello" + str; } }
5. 然后新建实现类,Server.java:
package com.wh.webservice.impl; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.wh.webservice.HelloWorld; public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implemetor =new HelloWorldImpl(); String address="http://192.168.1.111/helloWorld";//本机ip地址。 //jdk实现 暴露接口 //Endpoint.publish(address, implemetor); JaxWsServerFactoryBean factoryBean =new JaxWsServerFactoryBean(); //设置暴露接口: factoryBean.setAddress(address); factoryBean.setServiceClass(HelloWorld.class);//设置接口 factoryBean.setServiceBean(implemetor);//设置实现类 factoryBean.create();//创建接口。 System.out.println("web service started"); } }
说明:红色标识部分:Endpoint是jdk自身实现的webService,不需要用到CXF的任何东西。
所以,去除橘红色代码,Server,就可以直接运行了。
我们在浏览器里访问:http://192.168.1.111/helloWorld?wsdl 出现xml代码为正确。
橘红色标识部分:是运用CXF来实现webservice接口。(需要依赖cxf的包)pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.wh.webservice</groupId> <artifactId>WS_Server</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- cxf 依赖包引入 --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.11</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.11</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.11</version> </dependency> </dependencies> </project>
这样就 ok 了,运行方法和以上一样。