# 依赖 jar
commons-logging-1.1.1.jar
cxf-2.7.5.jar
httpasyncclient-4.0-beta3.jar
httpclient-4.2.1.jar
httpcore-4.2.2.jar
httpcore-nio-4.2.2.jar
neethi-3.0.2.jar
org.springframework.aop-3.1.3.RELEASE.jar
org.springframework.asm-3.1.3.RELEASE.jar
org.springframework.beans-3.1.3.RELEASE.jar
org.springframework.context-3.1.3.RELEASE.jar
org.springframework.core-3.1.3.RELEASE.jar
org.springframework.expression-3.1.3.RELEASE.jar
org.springframework.web-3.1.3.RELEASE.jar
org.springframework.web.servlet-3.1.3.RELEASE.jar
stax2-api-3.1.1.jar
woodstox-core-asl-4.2.0.jar
wsdl4j-1.6.3.jar
wss4j-1.6.10.jar
xmlschema-core-2.0.3.jar
xmlsec-1.5.4.jar
# download url
http://cxf.apache.org/download.html
http://www.springsource.org/download/community
1. 一个接口
package org.demo.ws;
import javax.jws.WebService;
@WebService
public interface HelloWorld
{
String sayHi(String text);
}
2. 一个实现类
package org.demo.ws.server;
import javax.jws.WebService;
import org.demo.ws.HelloWorld;
@WebService(serviceName="hello", endpointInterface="org.demo.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld
{
public HelloWorldImpl()
{
System.out.println("-- init HelloWorldImpl --");
}
public String sayHi(String text)
{
System.out.println("in sayHi, text : " + text);
return "hi " + text + ".";
}
}
3. 一个服务端用户名密码回调类
package org.demo.ws.server;
import java.io.IOException;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.ws.security.WSPasswordCallback;
public class MyPasswordCallback implements CallbackHandler
{
@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException
{
WSPasswordCallback pwCallback = (WSPasswordCallback)callbacks[0];
String user = pwCallback.getIdentifier();
if ("user1".equals(user))
{
pwCallback.setPassword("password1");
}
}
}
4. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
5. spring.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: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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd" >
<!-- 隐式地向Spring容器注册了注解处理器 -->
<context:annotation-config />
<!-- CXF Web Service -->
<import resource="classpath:META-INF/cxf/cxf.xml" />
<bean id="myPasswordCallback" class="org.demo.ws.server.MyPasswordCallback" />
<bean id="wSS4JInInterceptor" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
<entry key="user" value="cxfServer" />
<entry key="passwordCallbackRef">
<ref bean="myPasswordCallback" />
</entry>
</map>
</constructor-arg>
</bean>
<bean id="helloWorldImpl" class="org.demo.ws.server.HelloWorldImpl" />
<jaxws:endpoint id="helloWorld" address="/hello" implementor="#helloWorldImpl">
<jaxws:inInterceptors>
<ref bean="wSS4JInInterceptor"/>
</jaxws:inInterceptors>
</jaxws:endpoint>
</beans>
6. 访问 web service
http://localhost:8080/context/services/hello?wsdl
分享到:
相关推荐
WebService CXF,全称Apache CXF,是一款开源的Java框架,用于构建和开发Web服务。它支持多种协议和规范,包括SOAP、RESTful、XML以及Web服务标准如WS-*。在"WebService CXF --- 传输文件MTOM"这个主题中,我们将...
使用CXF实现WebService 资料中附有源代码+jar包+文档说明讲解 <!--导入CXF的xml --> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" ...
SpringBoot整合CXF发布WebService以及调用的方法 SpringBoot是一款流行的Java框架,而CXF(Apache CXF)是一款开源的WebService框架。今天,我们将介绍如何使用SpringBoot整合CXF发布WebService,以及如何调用它。 ...
- **部署服务**:使用`@WebService`注解标记接口,然后通过`Endpoint`类发布服务。 3. **客户端调用**:客户端可以通过JAX-WS的`Service`类,根据WSDL文件生成服务代理,调用服务接口方法。 二、CXF框架实现...
<jaxws:endpoint id="helloWorldService" implementor="#helloWorldServiceImpl" address="/HelloWorldService"/> ``` 最后,你需要在Web应用的部署描述符(如web.xml)中配置CXF的Servlet,以便处理HTTP...
### 基于CXF的WebService接口开发及调用步骤详解 #### 一、概述 在当前企业级应用开发中,服务化与微服务架构逐渐成为主流趋势,而WebService作为一种跨语言、跨平台的服务交互方式,在众多场景下仍然发挥着重要...
例如,你可以使用`<jaxws:endpoint>`标签来创建一个JAX-WS服务。同时,确保引入CXF的Spring上下文配置,如`cxf-servlet.xml`,以便在Web应用中部署CXF。 总结来说,CXF开发Web服务所需的核心JAR包主要包括API、SOAP...
-- 配置CXF Web Service endpoint --> <jaxws:endpoint id="cxfServiceImpl" implementor="#cxfServiceImpl" address="/say"> </jaxws:endpoint> <!-- 配置服务实现 --> ...
- 在Spring配置文件中配置CXF的`jaxws:endpoint`,指定服务地址和服务实现。 6. **调用Web服务** - 对于SOAP服务,可以使用CXF的JAX-WS客户端API,或者通过WSDL生成的客户端代理类进行调用。 - 对于RESTful服务...
总结来说,利用CXF实现WebService涉及了多个步骤,从添加依赖到编写服务接口和实现,再到配置和发布服务。这个过程展示了CXF的强大功能,使开发者能够轻松地创建符合标准的Web服务。通过实践和学习提供的示例代码,...
创建一个简单的 CXF 服务,首先要定义一个服务接口,使用 `@WebService` 注解标记为 Web 服务接口。例如: ```java @WebService public interface HelloWorld { public String sayHi(String name); } ``` 然后...
创建一个实现了服务接口的类,并使用`@WebService`注解和`@EndpointInterface`来指定实现的服务接口。例如: ```java @WebService(endpointInterface = "com.example.MyService") public class MyServiceImpl ...
3. **Spring的WS配置**:使用Spring的`<jaxws:endpoint>`标签来声明式地配置Web服务,包括服务接口、实现类、地址等。 4. **安全性配置**:Spring Security可以与CXF集成,实现Web服务的安全控制,如用户名/密码...
5. **发布WebService**:在Spring中,可以使用`<jaxws:endpoint>`标签来配置并发布CXF服务,该标签包含了服务的实现类、地址、绑定等信息。通过Spring的ApplicationContext,服务会被自动加载并启动。 6. **消费...
<artifactId>cxf-spring-boot-starter-jaxws <version>3.4.4 ``` 接下来,创建一个简单的Java接口,作为我们的Web服务接口。例如: ```java import javax.jws.WebService; import javax.jws.soap.SOAPBinding...
SpringBoot与CXF WebService整合教程 在Java世界中,SpringBoot以其简洁的配置和快速的应用开发能力,已经成为主流的微服务框架。而CXF作为一款强大的SOAP和RESTful Web服务框架,使得开发者能够轻松地创建和消费...
SSH+CXF整合发布Web服务(Webservice)实例详解 在软件开发中,SSH(Spring、Struts、Hibernate)是一个常见的Java EE应用框架组合,用于构建高效、可维护的企业级应用程序。CXF则是一个开源的Java服务堆栈,主要...
**WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...
<jaxws:endpoint id="helloWorldEndpoint" implementor="#helloWorldService" address="/HelloWorldService" /> ``` 4. **发布Web Service**:通过上述配置,Spring将自动创建一个基于HTTP的SOAP终结点,可供其他...