创建服务器端
1.创建一个接口
IMyService.java
package com.test.service; import java.util.List; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; @WebService(targetNamespace = "http://www.webservice.com") public interface IMyService { // 异常处理 @WebResult(name = "user") public User login(@WebParam(name = "username") String username, @WebParam(name = "password") String password) throws UserException; }
2.创建实现接口的类
MyServiceImpl.java
package com.test.service; import java.util.ArrayList; import java.util.List; import javax.jws.WebService; @WebService(endpointInterface = "com.test.service.IMyService", targetNamespace = "http://www.webservice.com") public class MyServiceImpl implements IMyService { private static List<User> users = new ArrayList<User>(); public MyServiceImpl() { users.add(new User(1, "admin", "管理员", "111111")); } @Override public User login(String username, String password) throws UserException { for (User user : users) { if (username.equals(user.getUsername()) && password.equals(user.getPassword())) { return user; } } throw new UserException("用户名或密码不正确!"); } }
3.自定义异常类
UserException.java
package com.test.service; public class UserException extends Exception { public UserException() { super(); } public UserException(String message, Throwable cause) { super(message, cause); } public UserException(String message) { super(message); } public UserException(Throwable cause) { super(cause); } }
4.开启服务
MyServer.java
package com.test.service; import javax.xml.ws.Endpoint; public class MyServer { public static void main(String[] args) { String address = "http://localhost:9999/server"; // 发布服务的实现类 Endpoint.publish(address, new MyServiceImpl()); } }
5.测试类TestSoap.java
// 异常处理 @Test public void test05() { try { // 创建服务 URL url = new URL("http://localhost:9999/server"); QName qname = new QName("http://www.webservice.com", "MyServiceImplService"); Service service = Service.create(url, qname); // 创建Dispatch Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName("http://www.webservice.com", "MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE); // 创建SOAP的body消息 SOAPMessage message = MessageFactory.newInstance().createMessage(); SOAPBody body = message.getSOAPPart().getEnvelope().getBody(); // 根据QName创建相应的节点 QName ename = new QName("http://www.webservice.com", "login", "ns"); SOAPBodyElement element = body.addBodyElement(ename); element.addChildElement("username").setValue("cdxs"); element.addChildElement("password").setValue("123"); message.writeTo(System.out); System.out.println("\n invoking..."); // 通过dispatch传递消息,返回响应消息 SOAPMessage response = dispatch.invoke(message); response.writeTo(System.out); System.out.println(); } catch (SOAPException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SOAPFaultException e) { System.out.println(e.getMessage()); } }
运行结果:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns:login xmlns:ns="http://www.webservice.com"><username>cdxs</username><password>123</password></ns:login></SOAP-ENV:Body></SOAP-ENV:Envelope>
invoking...
用户名或密码不正确!
相关推荐
使用自定义异常处理程序组件
Application中自定义全局配置/增加系统默认配置 支持文件和图片上传/批量上传,支持同步/异步上传,支持进度提示 支持文件下载/批量下载,支持同步/异步下载,支持进度提示 支持文件断点下载,独立下载的模块摒弃了...
定制您自己的自定义SOAP错误,这些错误符合XML模式内部定义的异常 SOAP测试框架:使用XmlUtils可以简化JAX-B类处理工作,并使用SOAP Raw Client可以针对端点测试格式错误的XML 与JDK 8、9和11ff一起使用 文献资料 ...
3.2.1 实现自定义异常类型的流程 3.2.2 使用流程 3.2.3 clickCallback 3.2.4 validateInput 3.3 小结 第4章 JavaScript面向对象编程和类型反射扩展 4.1 JavaScript函数 4.2 JavaScript类 4.3 Type 4.4 registerClass...
27.4.2 使用aggregateexception类处理任务异常 586 27.4.3 为canceled和faulted任务使用延续任务 589 第27章快速参考 590 第28章 执行并行数据访问 593 28.1 用plinq并行进行声明式 数据访问 593 28.1.1 用...
利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文...
Application中自定义全局配置/增加系统默认配置 支持文件和图片上传/批量上传,支持同步/异步上传,支持进度提示 支持文件下载/批量下载,支持同步/异步下载,支持进度提示 支持文件断点下载,独立下载的模块摒弃了...
异常统一管理,可设置相应的ERROR_REPORTING决定显示哪些异常; 只保留入口文件和核心文件,其他模块动态加载(为了安全,可以将除入口文件和核心文件以外的所有文件放在非web目录); 常用模块(Model__,cookie,...
SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、...
13.10. 处理异常 13.11. 惯例优先原则(convention over configuration) 13.11.1. 对控制器的支持: ControllerClassNameHandlerMapping 13.11.2. 对模型的支持:ModelMap (ModelAndView) 13.11.3. 对视图的支持: ...
第11章 异常处理 263 抛出和捕获异常 264 Exception对象 274 自定义异常 278 重新抛出异常 280 第12章 委托与事件 286 委托 287 多重委托 298 事件 302 使用匿名方法 315 从多重委托获取值 316 第2部分 C#编程 325 ...
第11章 异常处理 263 抛出和捕获异常 264 Exception对象 274 自定义异常 278 重新抛出异常 280 第12章 委托与事件 286 委托 287 多重委托 298 事件 302 使用匿名方法 315 从多重委托获取值 316 第2部分 C#编程 325 ...
第11章 异常处理 263 抛出和捕获异常 264 Exception对象 274 自定义异常 278 重新抛出异常 280 第12章 委托与事件 286 委托 287 多重委托 298 事件 302 使用匿名方法 315 从多重委托获取值 316 第2部分 C#编程 325 ...
5.6 处理视图中的安全性 196 5.6.1 问题 196 5.6.2 解决方案 196 5.6.3 工作原理 196 5.7 处理领域对象安全性 198 5.7.1 问题 198 5.7.2 解决方案 198 5.7.3 工作原理 199 5.8 小结 208 第6章 ...