CXF 发布 Java webservice

来源:互联网 发布:西华大学点击网络 编辑:程序博客网 时间:2024/06/04 18:09

1 服务端

服务端使用了 JAX-WS API 开发,并使用 CXF 发布,同时使用 Spring context 管理 bean 。由于发布到 Tomcat 服务器,所以要 “cxf-rt-transports-http”。

导包

<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>com.cheery</groupId>    <artifactId>recruitment</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>war</packaging>    <name>recruitment</name>    <description>recruitment</description>    <dependencies>        <!-- jaxws-api -->        <dependency>            <groupId>javax.xml.ws</groupId>            <artifactId>jaxws-api</artifactId>            <version>2.3.0</version>            <scope>provided</scope>        </dependency>        <!-- cxf-rt-frontend-jaxws -->        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-frontend-jaxws</artifactId>            <version>3.2.1</version>        </dependency>        <!-- cxf-rt-transports-http -->        <dependency>            <groupId>org.apache.cxf</groupId>            <artifactId>cxf-rt-transports-http</artifactId>            <version>3.2.1</version>        </dependency>        <!-- spring-context -->        <dependency>            <groupId>org.springframework</groupId>            <artifactId>spring-context</artifactId>            <version>5.0.2.RELEASE</version>        </dependency>    </dependencies></project>

定义 SEI

接口类,可要可不要

package com.cheery.recruitment.ws;import javax.jws.WebService;@WebServicepublic interface HelloWorld {    String sayHi(String text);}

实现类,它才是真正的 Service Endpoint

package com.cheery.recruitment.ws;import javax.jws.WebService;@WebService(endpointInterface = "com.cheery.recruitment.ws.HelloWorld")public class HelloWorldImpl implements HelloWorld {    public String sayHi(String text) {        System.out.println("sayHi called");        return "Hello " + text;    }}

使用 spring 管理服务bean

在 webapp 目录下创建文件:WEB-INF/beans.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">    <jaxws:endpoint id="helloWorld" implementor="com.cheery.recruitment.ws.HelloWorldImpl"        address="/HelloWorld" /></beans>

web.xml

定义 CXFServlet ,当然也要初始化 web 应用上下文

<?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"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"    version="3.0">    <display-name>recruitment</display-name>    <context-param>      <param-name>contextConfigLocation</param-name>      <param-value>WEB-INF/beans.xml</param-value>   </context-param>   <listener>      <listener-class>         org.springframework.web.context.ContextLoaderListener      </listener-class>   </listener>   <servlet>      <servlet-name>CXFServlet</servlet-name>            <servlet-class>         org.apache.cxf.transport.servlet.CXFServlet      </servlet-class>      <load-on-startup>1</load-on-startup>   </servlet>   <servlet-mapping>      <servlet-name>CXFServlet</servlet-name>      <url-pattern>/*</url-pattern>   </servlet-mapping></web-app>

部署Tomcat 并测试

浏览器地址:http://localhost:8080/recruitment/HelloWorld?wsdl
可以看到该服务资源的 wsdl 则表示发布成功。

2 使用 CXF 下载代码

C:\Users\z15075>d:D:\>cd D:\apache-cxf-3.1.12\binD:\apache-cxf-3.1.12\bin>wsdl2java -encoding utf-8 -p com.cheery.recruitment.ws -d D:\work\ http://localhost:8080/recruitment/HelloWorld?wsdl

3 客户端

将步骤2 的代码复制到 src 下

也用 spring 管理客户端bean吧

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">    <jaxws:client id="helloWorldClient" serviceClass="com.cheery.recruitment.ws.HelloWorld"        address="http://localhost:8080/recruitment/HelloWorld" /></beans>

像使用本地方法一样调用 webservice

package com.cheery.recruitment;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.cheery.recruitment.ws.HelloWorld;public class Client {    public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]                 {"classpath:META-INF/beans.xml"});        HelloWorld helloWorldClient=(HelloWorld) context.getBean("helloWorldClient");        String msg_retrun=helloWorldClient.sayHi("Java web service");        System.out.println(msg_retrun);    }}

4 总结

核心,JAX-WS API ,CXF frontend

阅读全文
'); })();
1 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中国人民银行怎么办卡 齐鲁银行怎么办信用卡 光大银行信用卡怎么办 脸上肉增生怎么办 眼角肉增生怎么办 忘记银行卡密码怎么办 工商银行怎么办贷款 工商银行怎么办卡 工商银行卡丢失怎么办 工商银行卡遗失怎么办 怎么办工商银行卡 手机银行怎么办 房地产破产业主怎么办 国航怎么办会员卡 做外贸英语不好怎么办 冠心病发作怎么办 剑网三忘记账号怎么办 剑网三更新失败怎么办 玩剑三fps低怎么办 丐帮云幕遮卖了怎么办 阴阳师满级后怎么办 黑色沙漠被开红怎么办 成为银行黑户怎么办 银行变成黑户怎么办 黑户怎么办信用卡 身份证成黑户怎么办 驱动卸载不了怎么办 回南天被子潮湿怎么办 铁戒指生锈怎么办 戒指生锈怎么办 老年人肌肉萎缩怎么办 没有左转待转区怎么办 紫砂壶出水不畅怎么办 墙壁起皮怎么办 衣服汗渍发黄怎么办 衣服变黄了怎么办 衣服发黄怎么办窍门 灰色衣服发黄怎么办 剑三装分减少怎么办 家里进小偷怎么办 感情生疏啦怎么办