`
schy_hqh
  • 浏览: 558168 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SOAP异常处理

 
阅读更多
接口
package com.hqh.soap;
import java.util.List;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

//如果要指定命名空间,那么接口与实现类要显示定义相同的targetNamespace!
@WebService
public interface IMyService {
	
	//服务端可能会抛出Exception,客户端调用如果出错则抛出异常
	@WebResult(name="user")
	public User login(@WebParam(name="username")String username,
					  @WebParam(name="pwd")String pwd) throws UserException;
	
}	


实现类
package com.hqh.soap;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

@WebService(endpointInterface="com.hqh.soap.IMyService")
public class MyServiceImpl implements IMyService {

	private static List<User> users = new ArrayList<User>();
	
	public MyServiceImpl() {
		users.add(new User(1,"admin","admin"));
	}
	
	@Override
	public User login(String username, String pwd) throws UserException {
		for(User user:users) {
			if(username.equals(user.getName()) && pwd.equals(user.getPwd()))
				return user;
		}
		//这里抛出的异常类型如果与接口中声明的异常类型一致,那么服务端将不抛出此异常,而是直接通过soap message将异常传递到客户端
		throw new UserException("用户不存在");
		//抛出运行时异常与接口声明的异常不同,服务端会自己抛出异常,客户端也能接收到异常信息
//		throw new RuntimeException("用户不存在");
	}

}




服务端开启服务
package com.hqh.soap;

import javax.xml.ws.Endpoint;

public class MyServer {
	public static void main(String[] args) {
		String address = "http://localhost:8888/ms";
		IMyService implementor = new MyServiceImpl();
		Endpoint.publish(address, implementor);
	}
}



客户端通过wsimport命令将wsdl转换为本地java文件
package com.hqh.soap.test;

import static org.junit.Assert.*;

import com.hqh.soap.IMyService;
import com.hqh.soap.MyServiceImplService;
import com.hqh.soap.UserException_Exception;


public class Test {

	@org.junit.Test
	public void test() {
		MyServiceImplService serviceImpl = new MyServiceImplService();
		//获取服务接口
		IMyService service = serviceImpl.getMyServiceImplPort();
		try {
			service.login("za", "123");
		} catch (UserException_Exception e) {
			//e.printStackTrace();
			System.out.println(e.getMessage());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

分享到:
评论

相关推荐

    java_soap学习资料

    6. **SOAP异常处理**: - SOAP错误通常通过SOAP Fault来表示,它是一个包含错误信息的SOAP消息。 - 在Java中,`SOAPFaultException`是抛出SOAP故障的常见方式。 7. **SOAP安全**: - SOAP消息可以通过HTTPS进行...

    使用 Spring-WS 完成的 Web Service (SOAP)

    Spring-WS 提供了 SOAP 异常处理机制。当服务端点抛出异常时,Spring-WS 可以自动将其转换为 SOAP 错误消息,这样客户端就能得到关于错误的详细信息。 **6. 源码分析** 在标签"源码"下,我们可以看到博主可能分享了...

    Laravel开发-laravel-soap Soap 协议客户端

    当SOAP请求失败时,`laravel-soap`会抛出异常,你可以捕获这些异常来处理错误。例如: ```php try { $response = $client-&gt;__soapCall('MethodName', $params); } catch (\WsScgi\LaravelSoap\Exceptions\...

    java调用soap接口案例

    例如,我们可以增加对异常的捕获和处理,优化日志记录,或者将结果存储到数据库或展示给用户。 8. **最佳实践**:在实际应用中,为了提高代码的可读性和可维护性,建议封装SOAP调用到单独的服务类或方法中。此外,...

    MFC下实现SOAP服务端和SOAP客户端

    - 错误处理:MFC和gSoap都会抛出异常,确保捕获并适当地处理这些异常。 - 性能优化:SOAP通信可能会有较高的开销,考虑缓存和批量操作以提高效率。 - 安全性:确保通信过程中的数据加密和身份验证,例如使用HTTPS或...

    CXF处理不规则SOAP message(转)

    当遇到不规则SOAP消息时,开发者可能需要深入理解CXF的工作原理,包括其消息模型、绑定层以及异常处理机制,以便正确地捕获和处理问题。 描述中提到的博客链接(https://huiseyiyu.iteye.com/blog/1172161)可能是...

    soap中Handler的处理

    每个Handler都可以决定是否终止处理链,这通常用于异常处理或消息验证。 3. **Handler实现**:在Java中,SOAP Handler是通过实现`javax.xml.soap.SOAPHandler&lt;SOAPMessageContext&gt;`接口来创建的。这个接口定义了`...

    自定义SOAP消息详细解释

    Encoded风格是SOAP规范第5节中定义的,它使用了一套特殊的编码规则来表示复杂的数据类型,允许处理各种变体。然而,Encoded方式可能会导致消息处理更为复杂,因为它需要接收方理解并处理这些编码规则。 Literal风格...

    使用try-catch-finally处理异常

    在编程领域,异常处理是确保程序健壮性的重要机制。当程序运行过程中遇到错误或异常情况时,如果没有妥善处理,可能会导致程序崩溃。Java、C#等许多编程语言提供了异常处理框架,其中“try-catch-finally”是常用的...

    soap.jar

    4. **异常处理**:针对SOAP通信中可能出现的错误和异常的处理逻辑。 5. **类型映射**:将Java对象转换为SOAP消息中的XML表示,反之亦然。 6. **命名空间支持**:处理SOAP消息中XML元素的命名空间。 7. **安全功能**...

    Nohttp封装,soap封装

    这通常涉及到解析和生成XML请求和响应,以及处理数据转换和异常处理等复杂工作。封装后的SOAP库,能够降低开发难度,使开发者更专注于业务逻辑,而非底层通信细节。 【使用方法】 根据描述,此项目包含了详尽的注释...

    在基于WCF的应用程序中处理SOAP异常

    在基于Windows Communication Foundation (WCF) 的应用程序中,处理SOAP异常是确保服务稳定性和健壮性的重要环节。SOAP异常是WCF服务在遇到错误时抛出的,它们以SOAP消息的形式封装了错误信息,以便跨网络传递。本篇...

    CXF SOAP应用实例

    CXF允许自定义SOAP消息处理器,实现特定的逻辑,如添加自定义头信息、处理异常等。这可以通过实现MessageObserver接口来完成。 6. **安全性与认证** CXF支持多种安全模型,包括基本认证、digest认证、SSL/TLS、WS...

    SOAP消息和WSDL

    Header包含了与消息处理相关的元数据,Body是消息的主要内容,而Envelope则定义了整个消息的结构。 创建SOAP消息的方式多种多样,主要通过编程语言中的库或框架来实现。例如,在Java中,我们可以使用JAX-WS(Java ...

    SoapToolkit20Samples.rar_SoapToolkit20Sampl_soap_soap C++_soap t

    2. SOAP与C++结合:由于标签中提到了"soap_c++",这意味着示例可能演示了如何在C++代码中集成SOAP Toolkit 2.0,创建SOAP客户端和服务端,处理数据类型映射,以及异常处理等。 3. 物流应用:标签中提到了"物流",这...

    java+soap+webservice 调用模拟

    错误处理也很重要,需要检查异常并适当地处理它们。 6. **Apache CXF**:除了JAX-WS,Apache CXF也是一个流行的Java SOAP库,提供更高级的功能,如WS-Security和WS-Addressing支持。 7. **测试SOAP Web服务**:在...

    Soap2Android实例

    - 处理可能出现的异常,如网络错误、解析错误等。 - 对于大型项目,考虑使用依赖注入框架(如Dagger)来管理和实例化Soap2Android客户端。 通过这个Soap2Android实例,开发者可以学习如何更高效、更优雅地在...

    华为vassdk_soap相关

    - 错误处理机制:对于可能出现的错误,需要有良好的异常处理机制。 - 安全性:使用HTTPS协议确保通信安全,避免敏感信息泄露。 - 性能优化:合理设计并发处理策略,提高服务的响应速度和稳定性。 8. **最佳实践*...

Global site tag (gtag.js) - Google Analytics