加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

cxf发布webservice

发布时间:2020-12-17 00:35:04 所属栏目:安全 来源:网络整理
导读:在我们学习cxf或者axis2时,会有响应的wsdl2java.bat,可以把我们发布的webservice服务,生成一个存根stud,初学者感觉,我靠生成了这么多乱七八糟的东西,非常苦恼,那么这个stud中包括什么呢? 主要包括:stub里面有client,还有很多webservice需要的javab

在我们学习cxf或者axis2时,会有响应的wsdl2java.bat,可以把我们发布的webservice服务,生成一个存根stud,初学者感觉,我靠生成了这么多乱七八糟的东西,非常苦恼,那么这个stud中包括什么呢?

主要包括:stub里面有client,还有很多webservice需要的javabean,还有接口。

那么大家应该知道了 ,这些乱起八糟的东西都是什么了,其实在真正的项目中,我们生成的代码肯定不是这么臃肿的,比如服务端就是提供接口,然后接口返回一个json数组,或者返回一个xml对象就可以了,客户端会这样去得到想要的json对象,例如:

url = new URL("http://www.weather.com.cn/data/cityinfo/101010100.html");
BufferedReader bf = new BufferedReader(new InputStreamReader(url.openStream(),"UTF-8"));
JSONObject json = JSONObject.fromObject(bf.readLine());          
return json;
这么几段代码就可以了。

这样就可以得到自己想要的json对象了。而不需要那么复杂的通过wsdl2java 这样的命令去生成stud。


那么解决了大家客户端生成乱七八糟代码的问题后我们看看,服务端的发布。那么在做项目时,大多数的项目中都会用到spring管理项目,所以首选cxf来集成。

service.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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jaxws="http://cxf.apache.org/jaxws"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
       http://cxf.apache.org/jaxws
       http://cxf.apache.org/schemas/jaxws.xsd
       ">
        <jaxws:endpoint   id="workFlowWebService"  implementor="com.ether.workflow.webservice.WorkFlowWebServiceImpl" address="/workFlow" />
</beans>
这样就可以发布自己的web项目了。很简单是不是?其实真的一点都不复杂。当然需要在
WorkFlowWebServiceImpl这个实现类和它的接口WorkFlowWebService上加上@webservice标签。

jaxws:endpoind是对jaxws:server的类的封装。所以大多数选择jaxws:endpoind标签。

这些是cxf对webservice的配置,当然还需要在spring的配置文件中引入以下cxf的配置文件

<!—还需要引入以下3个关于CXF的资源文件,这三个文件在cxf.jar中-->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    <import resource="classpath:services.xml" />
需要修改web.xml文件
<servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>
            org.apache.cxf.transport.servlet.CXFServlet
        </servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
</servlet-mapping>
注意<url-pattern>/ services/*</url-pattern>配置,CXFServlet会拦截此类url,进行处理。上面配置的webservice将通过如下URL访问到:
http://localhost:8080/cxf-ws/services/workFlow
<jaxws:endpoint >标签中address属性对应的值
cxf-ws为本项目的名称

配置完成之后,将项目部署到tomcat上
输入URL:http://localhost:8080/cxf-ws/services/ UserManager?wsdl
将会看到生成的wsdl文件

这样就发布成功了!

至于访问如下代码即可:

JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();      
factoryBean.setServiceClass(WorkFlowWebService.class);      
factoryBean.setAddress("http://localhost:8080/ems_new/ws/workFlow");      
WorkFlowWebService readerService = (WorkFlowWebService)factoryBean.create();      
String reader = readerService.findForms();      
System.out.println("Reader:"+reader); 

以上是自己在项目中的理解,可能会用不妥之处,希望有意见的高手给指点,毕竟还在学习阶段,希望大家支撑!!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读