不想新建项目了(可以参考前面一、二、三),就在现有的项目上说明吧,希望看得懂。
先配好服务器端。
1. 搭好Maven项目后,引入需要的包。pom.xml中增加:
<!-- CXF WebService --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf</artifactId> <version>2.4.6</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.neethi</groupId> <artifactId>neethi</artifactId> <version>3.0.1</version> <exclusions> <exclusion> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.ws.xmlschema</groupId> <artifactId>xmlschema-core</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-xjc</artifactId> <version>2.2.6</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.6</version> </dependency>
2.web.xml中增加:
<!-- Apache CXFServlet --> <servlet> <servlet-name>CXFServlet</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CXFServlet</servlet-name> <url-pattern>/webService/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.do</welcome-file> </welcome-file-list>
<context-param> <param-name>contextConfigLocation</param-name> <param-value> <!-- cxf webservice Bean --> /WEB-INF/webServiceBean.xml </param-value> </context-param>
3.webServiceBean.xml声明:
<?xml version="1.0" encoding="UTF-8"?> <!-- START SNIPPET: beans --> <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"> <!-- Import Apache CXF Bean Definition --> <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" /> <!-- implementor :接口类的实现类 address: 要和注释里面神秘的服务名对应, --> <jaxws:endpoint id="synergyWebService" implementor="cn.iscas.ac.gz.synergy.system.webService.SynergyWebServiceImpl" address="/SynergyWebService" /> </beans>
4.SynergyWebService 接口定义:
package cn.iscas.ac.gz.synergy.system.application.webService; import javax.jws.WebParam; import javax.jws.WebService; /** * @Description webService接口 * * */ @WebService public interface SynergyWebService { /** * * @Description 根据用户账号获取该用户信息 * * @param account 用户账号 * @return * */ public String getUser(@WebParam(name = "account") String account); }
5.SynergyWebServiceImpl 接口实现:
package cn.iscas.ac.gz.synergy.system.webService; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; import org.springframework.beans.factory.annotation.Autowired; import cn.iscas.ac.gz.synergy.system.application.webService.SynergyWebService; import cn.iscas.ac.gz.synergy.system.domain.repository.UserRepository; /** * @Description webService接口实现 注意:@webservice自动注入一定要写 * *注意这里的targetNamespace 一定是其实现接口的路径 */ @WebService(endpointInterface = "cn.iscas.ac.gz.synergy.system.application.webService.SynergyWebService", serviceName = "SynergyWebService",targetNamespace="http://webService.application.system.synergy.gz.ac.iscas.cn/") public class SynergyWebServiceImpl implements SynergyWebService { /* * 用户管理 */ @Autowired private UserRepository userInfoRepo; @Override public String getUser(String account) { //逻辑自己写 User user = userInfoRepo.getUserInfoByUserName(account); List<User> users = new ArrayList<User>(); users.add(user); String result = this.buildJSONForUsers(users); return result; } }
OK,如果没什么问题,服务端算是搭建OK了,访问下地址是否有XML文档:
http://127.0.0.1:8080/项目名/webService/SynergyWebService?wsdl
OK,接下来写客户端,动态调用:
package com.test; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; /** * @Description * * @author yeyuelong Email:yeyuelong@gz.iscas.ac.cn * @version 1.0 创建时间 2013-2-26 * */ public class CXFClient { public static void main(String[] args) { try { JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); org.apache.cxf.endpoint.Client client = dcf.createClient("http://127.0.0.1:8080/Synergy/webService/SynergyWebService?wsdl"); Object[] objects = client.invoke("getUser","admin@gziscas"); // 输出调用结果 System.out.println(objects[0].toString()); } catch (Exception e) { e.printStackTrace(); } } }
运行下,看是否可以获取到数据:
相关参考:
http://wenku.baidu.com/view/1343f96a1eb91a37f1115c0d.html
http://lost-alien.iteye.com/blog/1175859
相关推荐
NULL 博文链接:https://royal2xiaose.iteye.com/blog/1454464
NULL 博文链接:https://royal2xiaose.iteye.com/blog/1426872
NULL 博文链接:https://royal2xiaose.iteye.com/blog/1471255
赠送jar包:cxf-rt-transports-http-3.0.1.jar; 赠送原API文档:cxf-rt-transports-http-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-transports-http-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-transports-...
赠送jar包:cxf-rt-frontend-simple-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-simple-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-simple-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-...
赠送jar包:cxf-rt-bindings-soap-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-soap-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-soap-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-soap-...
赠送jar包:cxf-rt-frontend-jaxws-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxws-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxws-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxws...
赠送jar包:cxf-rt-frontend-jaxrs-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxrs-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxrs-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxrs...
赠送jar包:cxf-rt-rs-extension-providers-3.0.1.jar; 赠送原API文档:cxf-rt-rs-extension-providers-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-extension-providers-3.0.1-sources.jar; 赠送Maven依赖信息...
赠送jar包:cxf-rt-rs-client-3.0.1.jar; 赠送原API文档:cxf-rt-rs-client-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-client-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-rs-client-3.0.1.pom; 包含...
赠送jar包:cxf-rt-bindings-xml-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-xml-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-xml-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-xml-3.0.1....
赠送jar包:cxf-rt-ws-addr-3.0.1.jar; 赠送原API文档:cxf-rt-ws-addr-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-ws-addr-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-ws-addr-3.0.1.pom; 包含翻译后的API...
cxf-rt-frontend-jaxws-3.0.16.jar jar包下载3.0.16版本下载
赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...
cxf-dosgi-ri-singlebundle-distribution-1.4.0.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"/>