package ctsjavacoe.ws.fromjava;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.*;
import javax.xml.ws.soap.SOAPFaultException;
import org.apache.cxf.transport.http.*;
public class AuthValidationHandler implements SOAPHandler<SOAPMessageContext> {
public Set<QName> getHeaders() {
// TODO Auto-generated method stub
return null;
}
public void close(MessageContext context) {
}
public boolean handleFault(SOAPMessageContext context) {
return false;
}
public boolean handleMessage(SOAPMessageContext context) {
HttpServletRequest request = (HttpServletRequest) context
.get(AbstractHTTPDestination.HTTP_REQUEST);
//
if (request != null) {
System.out.println("Client IP:" + request.getRemoteAddr());
} else {
System.out.println("get client ip is null>>>>>>>>>");
}
Boolean outbound = (Boolean) context
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (!outbound.booleanValue()) {
SOAPMessage soapMessage = context.getMessage();
try {
SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart()
.getEnvelope();
SOAPHeader soapHeader = soapEnvelope.getHeader();
if (soapHeader == null)
generateSoapFault(soapMessage, "No Message Header...");
Iterator it = soapHeader
.extractHeaderElements(SOAPConstants.URI_SOAP_1_2_ROLE_NEXT);
if (it == null || !it.hasNext())
generateSoapFault(soapMessage,
"No Header block for role next");
Node node = (Node) it.next();
String value = node == null ? null : node.getValue();
if (value == null)
generateSoapFault(soapMessage,
"No authation info in header blocks");
String[] infos = value.split("&");
return authValidate(infos[0], infos[1]);
} catch (SOAPException e) {
e.printStackTrace();
}
}
return false;
}
private boolean authValidate(String userName, String password) {
if (userName == null || password == null) {
return false;
}
if ("admin".equals(userName) && "admin".equals(password)) {
return true;
}
return false;
}
private void generateSoapFault(SOAPMessage soapMessage, String reasion) {
try {
SOAPBody soapBody = soapMessage.getSOAPBody();
SOAPFault soapFault = soapBody.getFault();
if (soapFault == null) {
soapFault = soapBody.addFault();
}
soapFault.setFaultString(reasion);
throw new SOAPFaultException(soapFault);
} catch (SOAPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
相关推荐
在本教程中,我们将深入探讨如何使用JAX-WS来发布和调用Web服务。 ### 1. JAX-WS概述 JAX-WS提供了一种简化的方式,将Java方法映射到Web服务操作,反之亦然。它包括以下组件: - **Service Endpoint Interface ...
【标题】:Web服务之Java API for XML Web Services (JAX-WS) 【内容详解】 JAX-WS,全称为Java API for XML Web Services,是Java平台上的一个标准,用于构建和部署基于SOAP(Simple Object Access Protocol)的...
- **可扩展性**:支持WS-Security、WS-ReliableMessaging等高级Web服务协议,以满足安全性、可靠性的需求。 5. **与JAX-RPC的区别:** - JAX-WS是JAX-RPC的后续版本,它在设计上更注重简洁性和性能,且更符合现代...
- JAX-WS支持安全特性,如WS-Security(Web Services Security),可以添加数字签名和加密以确保数据的安全传输。 7. **性能优化**: - 缓存WSDL:客户端可以缓存WSDL,减少网络请求。 - MTOM(Message ...
- 安全性:利用WS-Security等规范,可以实现Web服务的身份验证和加密。 **5. 总结** 通过JAX-WS,开发者可以方便地构建和消费SOAP Web服务。MyEclipse等IDE提供了友好的集成环境,简化了整个过程。在实际项目中,...
它涵盖了从基本的SOAP(Simple Object Access Protocol)通信到更复杂的XML数据绑定和WS-Security安全配置等各种功能。 JAX-WS是Java平台上的一个标准API,用于构建和部署面向服务架构(SOA)中的Web服务。它简化了...
2. **webservices-extra.jar** - 此文件可能包含JAX-WS的一些扩展或额外功能,如WS-I(Web Services Interoperability)支持,或者对特定Web服务协议的实现,例如WS-Security(Web Services Security)或其他厂商...
WS-Security用于安全的Web服务通信;以及WS-ReliableMessaging和WS-Addressing等,增强了消息传递的可靠性和寻址能力。 总的来说,"Jax-ws RI.zip"是一个关键组件,用于在Tomcat环境中搭建和运行基于JAX-WS的Web...
4. **安全性**:JAX-WS提供了一套完整的安全模型,包括基本认证、TLS加密、WS-Security等,保障Web服务的安全性。 **总结** JAX-WS是Java开发者构建Web服务的重要工具,其简单易用的API和强大的功能使得创建和消费...
9. **安全性**:JAX-WS支持多种安全模型,包括基本认证、HTTPS、WS-Security等,以确保Web服务的安全通信。 10. **调试与测试**:开发者可以使用诸如soapUI这样的工具,通过发送SOAP请求来测试和调试JAX-WS Web服务...
此外,JAX-WS还提供了多种高级特性,如MTOM(Message Transmission Optimization Mechanism)用于优化二进制数据传输,以及WS-Security用于实现Web服务的安全性。在实际开发中,了解这些特性将有助于提高Web服务的...
JAX-WS还支持各种高级特性,如WS-Security(安全)、WS-ReliableMessaging(可靠消息传递)和WS-Policy(策略),这些都是构建复杂、安全的Web服务时的关键部分。 10. **学习资源** 对于初学者,这个"helloWS...
【JAX-WS开发部署WebService】是Web服务开发的一个重要主题,主要涉及到使用Java API for XML Web Services(JAX-WS)创建和部署基于SOAP的Web服务。JAX-WS是一种标准的、Java平台上的API,它使得开发人员能够轻松地...
- 考虑到Web服务的安全性,JAX-WS支持WS-Security标准,可以实现消息认证、加密和签名。 8. **测试**: - 使用工具如`wsimport`生成客户端代码后,可以编写测试用例来验证服务的正确性。 9. **ws_1文件**: - ...
在JAX-WS之旅的第二部分中,我们将深入探讨这个Java API for XML Web Services的核心概念和技术细节。JAX-WS是Java平台上的一个标准,用于创建和消费Web服务,它使得开发人员能够轻松地实现基于SOAP的Web服务。在这...
- **WS-Security**:提供Web服务安全标准,如数字签名和加密。 - **WS-ReliableMessaging**:确保消息传递的可靠性和顺序。 - **WS-Addressing**:处理Web服务的寻址问题。 **7. 结论** JAX-WS为Java开发者提供了...
4. **安全性增强**:内置了对 WS-Security 等安全协议的支持,确保了数据传输的安全性和完整性。 #### 三、JAX-WS 2.0 规范的技术细节 1. **SOAP 支持**: - **SOAP 1.2**:与 SOAP 1.1 相比,SOAP 1.2 引入了更...
2. **消息级安全**:JAX-WS支持WS-Security,可以对消息进行加密、签名等安全操作。 3. **MTOM与SwA**:JAX-WS支持MTOM(Message Transmission Optimization Mechanism)和SwA(SwaReference)技术,用于优化大型...
JAX-WS的优势在于其与Java EE的集成,使得Web服务的开发和部署变得简单,同时提供了高级特性,如MTOM(Message Transmission Optimization Mechanism)和WS-Security,以支持大文件传输和安全通信。 学习JAX-WS有助...