- 浏览: 467164 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (371)
- Java (44)
- Flex (25)
- Design Pattern / UML (5)
- JVM (14)
- Software Engineer (4)
- Testing (30)
- Web Backend (60)
- Linux (7)
- Database (11)
- SOA (28)
- English (6)
- FX (5)
- SAP Support (25)
- SAP Development (5)
- SAP Impl & Oprn (8)
- Articles (15)
- Music (4)
- Recipe (14)
- Multi-thread (4)
- Lucene (2)
- CS basic / Algorithm (12)
- Tour (3)
- C C++ (21)
- Others (10)
- Code Repository C++ (1)
- Code Repository Java (1)
- Code Repository Algorithm (1)
- Code Repository SQL (1)
- Web Frontend (4)
最新评论
-
xiangxm:
Java 强引用、 软引用、 弱引用、虚引用 -
nml-lyb:
123
Mule 的第一个例子 -
nml-lyb:
http://www.baidu.com
Mule 的第一个例子 -
white___ant:
...
Java 强引用、 软引用、 弱引用、虚引用 -
joeyon:
...
Java NIO介绍
1、在eclipse中 创建一个java project。
2、把cxf的lib包中的jar文件放入项目的类路径。
3、4个文件如下:(cxf内置了jetty server, 省去了很多发布的麻烦)
HelloWorld.java
package test;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHello(String str);
}
HelloWorldImpl.java
package test;
import javax.jws.WebService;
@WebService
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String str) {
System.out.println(" sayHello is called.");
return "Hello " + str +" !";
}
}
MainServer.java
package test;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class MainServer {
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setServiceClass(HelloWorldImpl.class);
factory.setAddress("http://localhost:8080/HelloWorld");
Server server = factory.create();
server.start();
}
}
HelloWorldClient.java
package test;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class HelloWorldClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://localhost:8080/HelloWorld");
factory.setServiceClass(HelloWorld.class);
HelloWorld helloworld = (HelloWorld) factory.create();
System.out.println(helloworld.sayHello("CY"));
}
}
4、先运行MainServer.java,(即启动服务器,发布server);
再运行HelloWorldClient.java,可以看到结果。
通过访问 http://localhost:8080/HelloWorld?wsdl 可以看web service 是否发布成功。
================ WSDL 文件 剖析 =========================
// 这里的name 是 发布的service类名 + “Service”, targetNamespace 是取决于 发布类所在的包
<wsdl:definitions
name="HelloWorldImplService" targetNamespace="http://test/">
// types 的作用是 定义 输入输出参数 都是什么样子的(类型)
<wsdl:types
>
<xs:schema elementFormDefault="unqualified" targetNamespace="http://test/" version="1.0">
// 输入参数名字为‘sayHello’,类型是复杂类型‘sayHello’,在下面定义
<xs:element name="sayHello" type="tns:sayHello"/>
// 输出参数名字为‘sayHelloResponse’,类型是复杂类型sayHelloResponse, 在下面定义
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
// 输入参数类型的具体定义:包含一个element, 名字为arg0,类型为string
<xs:complexType name="sayHello">
<xs:sequence>
// 这里的name 是自动生成的。当然,也可以在代码中指定名字。
// public @WebResult(name="sayHelloResult")String sayHello(@WebParam(name="name")String str)
<xs:element minOccurs="0" name="arg0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
// 这个message代表 输入信息。这个输入信息的类型是sayHello,在<types>中定义过
<wsdl:message
name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters">
</wsdl:part>
</wsdl:message>
// 这个message代表 输出信息。这个输出信息的类型是sayHelloResponse,在<types>中定义过
<wsdl:message
name="sayHelloResponse">
<wsdl:part element="tns:sayHelloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
// portType 就是我们定义的接口。一个接口对应一个port
<wsdl:portType
name="HelloWorld">
// 这里的一个operation就是 接口中的一个方法
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello" name="sayHello">
</wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
// 把接口进行 soap 绑盯。
<wsdl:binding
name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorld">
// 这里指明 绑盯的协议为 http,style为document
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
// 具体方法的绑盯类型定义
<wsdl:operation name="sayHello">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHello">
// literal 文本
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
// 把n个接口放到一起,总称为一个service
<wsdl:service
name="HelloWorldImplService">
// 这里一个port就是一个接口。对应的绑盯刚刚定义过
<wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">
// 这个接口的地址
<soap:address location="http://localhost:8080/HelloWorld"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
评论
<wsdl:definitions name="HelloWorldImplService" targetNamespace="http://impl.services/"> <wsdl:import location="http://localhost:8080/HelloWorld?wsdl=HelloWorld.wsdl" namespace="http://services/"> </wsdl:import> − <wsdl:binding name="HelloWorldImplServiceSoapBinding" type="ns1:HelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> − <wsdl:operation name="sayHello"> <soap:operation soapAction="" style="document"/> − <wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> − <wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> − <wsdl:service name="HelloWorldImplService"> − <wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort"> <soap:address location="http://localhost:8080/HelloWorld"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
请问是什么缘故吗?
发表评论
-
Mule 例子:以axis做为inbound,传递复杂类型,MuleClient UMOMessage
2009-09-22 16:29 2999这个例子出自:http://raymondhekk.iteye ... -
Axis 客户端代码
2009-09-22 16:16 1859import org.apache.axis.client.C ... -
Mule, AquaLogic ESB 学习阶段性总结 (2009.9.21)
2009-09-21 14:53 1382下面这段文字为转载:http://dragonetzhou.i ... -
Mule 的 Loan Broker 例子的 PPT (经典的ESB的例子)
2009-09-21 14:26 1839http://wiki.springside.org.cn/d ... -
Aqualogic Service Bus 的第三个例子 (消息流进阶)
2009-09-18 17:34 1027P87 的那个例子 1、已经发布的Web Servic ... -
Aqualogic Service Bus 的第二个例子 (消息流基础)
2009-09-17 15:15 1225消息流节点类型: 启动节点、路由节点、分支节点、管道对节点 ... -
Aqualogic Service Bus 的第一个例子 (入门)
2009-09-17 11:17 1581本例子出自 《SOA权威指南》 第三章中的那个入门例子。 亲 ... -
Mule Transformers
2009-09-07 14:58 1719Using Transformers [ Configuri ... -
XMPP协议简介
2009-09-07 14:15 1790XMPP协议简介 XMPP(Ext ... -
REST(Representational State Transfer) 介绍
2009-08-31 23:24 1348REST(Representational State Tra ... -
Staged Event Driven Architecture (SEDA) 介绍
2009-08-31 10:29 2464一、前言 二、当前流行的两种并发处理编程模型 ... -
Camel 入门
2009-08-27 18:25 900前段时间和一些朋友聊 ... -
OSGi 入门
2009-08-27 18:15 706还没开始入... -
Mule 的消息路由
2009-08-27 17:53 1248Mule的消息路由 作者 J ... -
Mule 的第二个例子
2009-08-27 15:17 2966这个例子 主要 演示了 web service 作为 inbo ... -
Geronimo入门
2009-08-25 16:23 955http://www.matrix.org.cn/resour ... -
Apache Mina 入门
2009-08-25 13:31 11892007 年 12 月 24 日 本文将通过一个简单的问 ... -
CXF -- JAXB
2009-08-21 10:38 5588JAXB : Java API for XML Bindin ... -
CXF -- JAX-WS
2009-08-21 10:01 1367JAX-WS Java API for XML Web Se ... -
CXF的第一个例子 -- 深入剖析
2009-08-20 20:43 1723Web Service 的 Client 和 Server 端 ...
相关推荐
1. **Apache CXF框架**:Apache CXF是一个用于构建和开发Web服务的开放源代码框架。它支持多种协议和绑定,如SOAP、RESTful HTTP、XML/HTTP、JMS等。CXF不仅允许你消费Web服务,还可以用来创建和发布自己的Web服务。...
【标题】"CXF的第一个例子helloWorld"是一个基础教程,主要介绍了如何使用Apache CXF框架创建一个简单的Web服务。Apache CXF是一个开源的Java框架,它用于构建和开发Web服务,支持SOAP、RESTful等多种通信协议。这个...
### CXF生成的WSDL详解 #### 一、概述 WSDL(Web Services Description Language)是一种用于描述Web服务的标准XML格式。它包含了服务提供者如何访问该服务的信息,包括服务的位置、服务可用的方法以及这些方法...
6. **CXF的WSDL第一方式**:CXF也支持WSDL第一方式,即先有WSDL描述服务,然后根据WSDL自动生成Java代码。这种方式适合于已有WSDL描述的服务,或者需要严格遵循WSDL规范的情况。 7. **CXF与Spring集成**:CXF与...
1. **获取WSDL文件**:首先,你需要一个有效的WSDL文件,该文件定义了Web服务的接口。这通常由服务提供者提供。 2. **使用CXF wsdl2java工具**:CXF提供了一个命令行工具`wsdl2java`,可以将WSDL转换为Java客户端...
赠送jar包:cxf-rt-wsdl-3.0.1.jar; 赠送原API文档:cxf-rt-wsdl-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-wsdl-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-wsdl-3.0.1.pom; 包含翻译后的API文档:cxf-rt...
1. **准备WSDL文件**:确保你有一个有效的WSDL文件,该文件定义了你想要生成Java代码的Web服务接口。WSDL文件应该包含了服务的端点、消息结构和操作描述。 2. **使用CXF的wsdl2java工具**:CXF提供了一个名为`wsdl2...
它支持WSDL(Web服务描述语言)第一和第二版,用于服务的描述和发现。 3. **创建服务**:使用CXF,你可以定义一个Java接口并将其暴露为Web服务。CXF会自动生成对应的WSDL,并处理客户端请求和服务器端响应。 4. **...
使用cxf wsdl2java生成webservice客户端命令
### Apache CXF wsdl2java 工具使用详解 #### 一、Apache CXF 概述 Apache CXF 是一个高性能、轻量级的开源框架,用于构建和使用基于 SOAP 和 REST 规范的 Web 服务。CXF 提供了强大的功能支持,包括 XML 数据的...
在视频中,可能还会讲解如何使用CXF工具解析和生成WSDL,例如使用wsdl2java命令行工具将WSDL转换为Java类,或者使用cxf-codegen-plugin Maven插件自动化这个过程。此外,可能会涉及到CXF的动态客户端,它可以从WSDL...
通过学习这个例子,你将能够熟练地运用 CXF 创建安全的服务器端和客户端应用,同时也能够掌握如何配置和管理认证策略。这个过程将涉及到 Spring 配置、CXF 拦截器、HTTP 协议的认证头等关键技术点,对于提升你的 IT ...
Web服务描述语言(WSDL,Web Services Description Language)是一种XML格式,用于定义网络服务的接口。它是构建基于SOAP(Simple Object Access Protocol)的Web服务的关键技术之一,允许开发者明确地描述服务的...
1. **定义服务接口**:首先,我们需要定义一个Java接口,声明服务的方法。这些方法将在Web服务中暴露。 ```java import javax.jws.WebService; @WebService public interface HelloWorld { String sayHello(String ...
当我们拥有一个WSDL文件时,我们可以利用CXF来创建客户端代理类,这些代理类可以让我们像调用本地方法一样调用远程Web服务。 首先,我们需要将WSDL文件引入到CXF项目中。这通常涉及到以下步骤: 1. 引入CXF库:...
在本例中,“webservice天气预报例子cxf实例”指的是使用Apache CXF框架实现的一个天气预报相关的Web服务示例。 Apache CXF是一个开源框架,它为开发和部署Web服务提供了全面的支持。CXF允许开发者通过Java编程模型...
### CXF服务端WSDL发布及代码生成详解 #### 一、概述 在现代软件开发中,特别是企业级应用开发领域,Web服务扮演着至关重要的角色。CXF(Camel and XFire)作为Apache下的一个开源项目,为开发高质量的Web服务提供...
CXF(CXF: Composite eXtensible Framework)是一个开源的Java框架,它提供了一种在Java应用程序中创建和消费Web服务的方式。本教程将基于CXF构建一个简单的Web服务,包括服务端和客户端的实现。我们将使用CXF提供的...
当你有一个WSDL文件时,你可以使用CXF的`wsdl2java`命令行工具将其转换为Java代码,这样你就可以在Java环境中实现或调用这个Web服务。 以下是使用`wsdl2java`的基本步骤: 1. **安装CXF**: 首先,你需要在你的开发...
这是一个简单的例子,仅定义了一个方法`sayHi`,该方法接受一个字符串参数并返回一个字符串。 ```java package org.yifeng.service; public interface HelloWorldService { String sayHi(String text); } ``` ##...