首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

soap中自定义错误处理

2013-11-14 
soap中自定义异常处理创建服务器端1.创建一个接口IMyService.javapackage com.test.serviceimport java.u

soap中自定义异常处理

创建服务器端

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"));}@Overridepublic 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

// 异常处理@Testpublic 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);// 创建DispatchDispatch<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...

用户名或密码不正确!

?

热点排行