好文档 - 专业文书写作范文服务资料分享网站

axis+webservice教程

天下 分享 时间: 加入收藏 我要投稿 点赞

编写Customer Exception的代码。

Java代码

package com.chnic.exception;

import java.rmi.RemoteException;

public class NoSuchUserException extends RemoteException {

private String errorMessage = \ private int id;

private static final long serialVersionUID = 1L;

public NoSuchUserException() { }

public void printErrorMessage(){

System.out.println(errorMessage + id); }

public int getId() { return id; }

public void setId(int id) { this.id = id; } }

NoSuchUserException这个类会记录在数据库没有相应数据的ID的值,然后返回给Client。值得注意的是,因为这个是个远程异常。所以要继承RemoteException这个类。两个要transfer的Bean完成之后。我们来编写Service Ojbect的代码。

Java代码

package com.chnic.webservice;

import java.sql.Connection;

import java.sql.PreparedStatement; import java.sql.ResultSet;

import java.sql.SQLException;

import com.chnic.bean.UserBean;

import com.chnic.exception.NoSuchUserException; import java.sql.DriverManager;

public class CheckUserInfo {

private String url = \ private String user = \

private String password = \

public CheckUserInfo(){ }

public Connection getConn(){ try {

Class.forName(\

return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }

return null; }

public UserBean checkUser(int id) throws NoSuchUserException{ Connection conn = null; try {

conn = this.getConn();

PreparedStatement statement =

conn.prepareStatement(\ statement.setInt(1, id);

ResultSet rs = statement.executeQuery(); boolean flag = false; UserBean user = null;

while(rs.next()){ flag = true;

user = new UserBean(); user.setId(id);

user.setName(rs.getString(2)); }

rs.close(); if(flag)

return user; else{

NoSuchUserException userException = new NoSuchUserException();

userException.setId(id);

throw userException; }

} catch (SQLException e) { e.printStackTrace(); }finally{

this.closeConn(conn); }

return null; }

public void closeConn(Connection conn){ try {

conn.close();

} catch (SQLException e) { e.printStackTrace(); } } }

因为是Demo代码,代码写的比较粗糙,反正就是为了个演示。大家能看出来效果就好了。代码很简单,接收到一个id,然后在数据库里做匹配。如果找到匹配的了返回那个userbean,如果没找到就throw一个Exception出去。在这里多嘴一句。传递的Bean赋值的时候一定要用setXXX方法,不能用构造函数传递,否则传递过去之后属性值会丢失。 你编写的那个Bean一定要严格遵循JavaBean规范。

之后我们来看WSDD发布文件。比起之前我们看到的WSDD文件,这次的稍微有点点复杂。

Xml代码

xmlns:java=\

http://faults.samples

qname=\ xmlns:operNS=\ returnQName=\

returnType=\

xmlns:rtns=\

xmlns:tns=\

xmlns:fns=\

class=\ type=\ xmlns:tns=\

type=\

serializer=\ deserializer=\ encodingStyle=\

serializer=\ deserializer=\ encodingStyle=\

首先不同的是多了个命名空间也就是namespace节点,等会测试代码中会看到用途。除了namespace之外还有operation这个节点和里面的parameter和fault子节点。先来介绍operation这个节点的属性。

name:操作名称或者方法名称,这个值会和你server发布的相关方法名匹配,所以要和方法名相同。

qname:针对这个operation的限定名。

xmlns:针对这个qname的命名空间也就是namespace。(不明白的可以看上一篇博文)

returnQName:这个元素节点所对应的方法返回出来对象的Qname。

returnType:返回类型,注意和下面的typemapping的qname比较。

parameter节点是这个operation指代的方法的参数,fault节点代表要这个方法要抛出的异常。异常也需要被mapping。下面的typemapping做的也是这样的事情。这两个元素的节点的属性和operation都是类似,对以一下大概就知道什么意思了。在这里也不多解释了。现在来看测试代码。

Java代码

package com.chnic.test;

import java.rmi.RemoteException;

import javax.xml.namespace.QName; import javax.xml.rpc.Call; import javax.xml.rpc.Service;

import javax.xml.rpc.ServiceException; import javax.xml.rpc.ServiceFactory;

import javax.xml.rpc.encoding.TypeMapping;

import javax.xml.rpc.encoding.TypeMappingRegistry;

import org.apache.axis.encoding.ser.BeanDeserializerFactory; import org.apache.axis.encoding.ser.BeanSerializerFactory;

import com.chnic.bean.UserBean;

import com.chnic.exception.NoSuchUserException;

public class TestException {

public static void main(String[] args){ String uri = \

String serviceName = \ ServiceFactory serviceFactory;

String url = \ try {

serviceFactory = ServiceFactory.newInstance(); QName serQ = new QName(uri, serviceName);

Service service = serviceFactory.createService(serQ);

axis+webservice教程

编写CustomerException的代码。Java代码packagecom.chnic.exception;importjava.rmi.RemoteException;publicclassNoSuchUserExceptionextendsRemoteException{
推荐度:
点击下载文档文档为doc格式
1zuqb7qnnb9acj39pw6l
领取福利

微信扫码领取福利

微信扫码分享