最近,在研究CXF,在用JaxWsProxyFactoryBean 完成调用服务端虽然成功,但是不明白道理,所以DEBUG+源代码了哈
客户端代码:
public final class Client {
private Client() {
}
public static void main(String args[]) throws Exception {
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setServiceClass(demo.spring.HelloWorld.class);
factoryBean.setAddress("http://localhost:8080/HelloWorld");
HelloWorld client = (HelloWorld) factoryBean.create();
String response = client.sayHi("Joe");
System.out.println("Response: " + response);
System.exit(0);
}
}
服务器端代码:CXF包的SAMPLE,我们要看的是客户端代码:
这个DEMO非常简单!
package demo.spring;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHi(String text);
}
package demo.spring;
import javax.jws.WebService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@WebService(endpointInterface = "demo.spring.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
private final static Log log = LogFactory.getLog(HelloWorldImpl.class);
public String sayHi(String text) {
log.info("@WebService Hello support service");
return "Hello " + text;
}
}
bean.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 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" />
<jaxws:endpoint id="helloWorld"
implementor="demo.spring.HelloWorldImpl" address="/HelloWorld" />
</beans>
<!-- END SNIPPET: beans -->
分析:
在把服务器端DEPLOY到TOMCAT然后启动
运行客户端,发现SPRING LOAD很多XCF.JAR下面的META-INF下的XML文件,怎么LOAD,一定那里有配置或者约定!
结果果然是:
JaxWsProxyFactoryBean.java
ClientProxyFactoryBean.java
ClientFactoryBean.java
AbstractWSDLBasedEndpointFactory.java
AbstractEndpointFactory.java
BusFactory.java
SpringBusFactory.java
BusApplicationContext.java[哈哈上下文....]
BusFactory.java 内部去找JAR包下面的配置文件了哈找到SpringBusFactory
String serviceId = "META-INF/services/" + BusFactory.BUS_FACTORY_PROPERTY_NAME;
SpringBusFactory 搞定BusApplicationContext
BusApplicationContext内部
private static final String DEFAULT_CXF_CFG_FILE = "META-INF/cxf/cxf.xml";
private static final String DEFAULT_CXF_EXT_CFG_FILE = "classpath*:META-INF/cxf/cxf.extension";
一切就搞定
附件有代码:和PPT[截图]
希望大家分享,CXF资料不多哈
努力!!
分享到:
相关推荐
CXF客户端调用例子展示了如何使用CXF来创建和消费Web服务。这个例子包含了服务端和客户端两部分,两者都是用Java语言编写的。 在Java中,CXF提供了丰富的API和工具,使得开发者能够方便地实现SOAP(Simple Object ...
Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...
- 对于客户端调用,可以使用CXF的`JaxWsProxyFactoryBean`创建服务代理对象,然后调用其方法进行服务调用。 4. **项目结构** - `.classpath`和`.project`是Eclipse IDE的项目配置文件。 - `pom.xml`是Maven的...
**创建Webservice CXF客户端的步骤如下:** **服务端项目准备:** 1. **引入Webservice库:** 首先,你需要下载Apache CXF的库。例如,你可以获取apache-cxf-2.7.6.zip,并将其解压缩。将解压后的`lib`目录中的...
它可能包含了CXF客户端的bean定义,用于消费远程服务。 4. **项目导入与运行** 提到这个项目是“绝对可运行”的,这意味着包含了所有必要的依赖和配置。导入Eclipse或MyEclipse后,只需几分钟即可启动并测试服务...
CXF服务器端支持JAX-WS规范,可以将Java接口直接映射为SOAP服务,简化了服务的发布过程。 使用这些最小jar包时,需要注意以下几点: 1. 虽然这些jar包是最小化的,但可能仍需要根据具体需求添加额外的依赖,例如...
### CXF 开发 WebService 客户端详细指南 ...这种方式不仅简化了客户端的开发过程,还提供了良好的可维护性和扩展性。在未来开发类似项目时,您可以参考本教程快速搭建起客户端框架,并根据具体需求进行调整和完善。
6. **CXF的Demo**:`Cxf_Client`文件可能包含了CXF的客户端示例,展示了如何配置和使用CXF客户端来调用远程Web服务。而`Cxf_Server`文件则可能是服务端的示例,涵盖了服务的创建、配置和服务发布。 7. **RESTful...
Cxf_Client目录下的文件很可能包含了CXF客户端的配置、代码示例以及测试用例,展示了如何连接到服务端并执行请求。 四、CXF Server(Cxf_Server): Cxf_Server部分则展示了服务端的实现,可能包含服务接口、实现类...
你可以定义一个实现了`ClientInterceptor`或`ServerInterceptor`接口的类,并通过`interceptors`属性添加到CXF客户端或服务器端。 6. **授权校验**:在拦截器中,你可以检查请求头中的认证信息,比如Token或者API...
### CXF提供的wsdl2java工具创建客户端的相关知识点 #### 一、背景介绍 CXF是一个强大的开源项目,主要用于简化企业级服务(如RESTful Web服务、SOAP Web服务等)的构建过程。它提供了多种工具和服务,使得开发者...
对于"WebService_CXF_Client_1"这个文件,很可能包含了CXF生成的客户端代码,这些代码可以帮助我们创建并配置一个CXF客户端,用于调用已发布的Web服务。客户端通常需要以下步骤: 1. 加载WSDL,解析服务定义。 2. ...
以上步骤详细介绍了如何使用Spring 3 + CXF 3.4搭建WebService服务端,并通过Axis 1.4客户端进行调用的过程。通过这种方式,可以实现不同技术栈之间Web服务的有效交互。在实际应用中,还需要注意安全性和性能优化等...
在给定的压缩包文件中,"WebService_Server"可能包含了SpringBoot与CXF集成的服务器端代码示例,而"Webservice_Client"则可能包含CXF客户端调用服务的示例代码。这两个部分可以作为学习和实践SpringBoot发布和消费...
在提供的压缩包文件"CXFClient"中,通常包含的是一个CXF客户端示例,用于调用服务端的接口。客户端配置同样可以使用Spring Boot的自动配置,只需要设置服务的URL,就可以方便地进行调用。在实际应用中,可以创建一个...
本篇将深入探讨如何利用CXF来开发Web Service及其客户端,以及相关的重要知识点。 ### 1. CXF简介 Apache CXF是一个全面的服务框架,支持多种Web服务规范,如SOAP、RESTful API、WS-*(如WS-Security、WS-...
【CXF入门 -- 第一个简单webService】 Apache CXF 是一款强大的开源服务框架,它用于构建和开发服务,包括Web服务。...实践过程中,你将对CXF的生命周期、服务暴露、客户端生成和通信机制有更深入的理解。
- **服务生成**:CXF可以从WSDL(Web Service Description Language)文档生成Java代码,反之亦然,这使得开发过程更加简便。 - **客户端支持**:CXF提供客户端API,允许开发者创建Web服务客户端,与服务端进行...
客户端启动类负责调用远程服务。在本例中,我们通过`JaxWsProxyFactoryBean`创建代理对象: ```java public class ClientStart { public static void main(String args[]) throws Exception { ...