cxf发布webservice
在我们学习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); 以上是自己在项目中的理解,可能会用不妥之处,希望有意见的高手给指点,毕竟还在学习阶段,希望大家支撑!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |