Y作者u9423504 (缘投农夫)
看板java
标题[问题]java jersey webservice如何补捉Exception
时间Mon Nov 16 16:37:58 2015
各位好:
小弟目前使用 Jersey 开发Webservice。目前遇到一些困难,想请各位前辈帮个忙。
这个问题是如何在Jersey web api 内 补捉调用物件的Excepiton并回传给Client。
以下是开发环境:
(1)作业系统:Windows XP
(2)开发工具:Eclipse Java EE IDE for Web Developers
(3)JAVA版本:jdk 1.6.0.45
(4)Jersey API 版本:1.9
(5)资料库:Oracle 11g
--------------------------------------------------------
以下是程式码:
public class oracle {
DataSource dataSource = DataSourcePolling.getDataSource();
public void InsertNewTransFrom(on_shift shift ){
Connection con =null;
Statement state =null;
try{
StringBuilder sql = new StringBuilder();
sql.append("insert into \"on_shift\" ");
sql.append("(\"shnumber\",\"receiver\",\"taker\",\"trandate\",\"schedule\")");
sql.append("values");
sql.append("('"+shift.getShnumber()+"','"+shift.getReceiver()+"','"+shift.getTaker()+"','"+shift.getTrandate()+"','"+shift.getSchedule()+"'");
sql.append(")");
con=dataSource.getConnection();
state = con.createStatement();
state.executeUpdate(sql.toString());
state.close();
con.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}
/*
上述oracle class 只节录一部分的程式码上来。
本class的主要功能是提供给WebService调用。WebService收集到的
前端资料会调用本class对资料库的新增、查询、修改等功能。
*/
public class MailSent extends NotesThread{
public MailSent(String pwd,String attche,String NameNsf,String
subject,String sent,String name){
}
public void runNotes(){
try{
}
catch(NotesException e){
}
catch(NoClassDefFoundError e){
}
}
}
/*
MailSent class只节录部分程式码。
本class的主要功能是提供给WebService调用。当WebService要使用寄信的
功能时会调用本class。
*/
--------------------------------------------------------------------------
@Path("/transform")
public class trans {
oracle oa = new oracle();
ObjectMapper mapper = new ObjectMapper();
@POST
@Path("/add/transform")
public Response transFormNew(@FormParam("receiver") String
receiver,@FormParam("taker") String taker
,@FormParam("trandate") String
trandate,@FormParam("schedule") String schedule{
on_shift shift = new on_shift();
shift.setReceiver(receiver);
shift.setTaker(taker);
shift.setTrandate(trandate);
shift.setSchedule(schedule);
oa.InsertNewTransFrom(shift); //调用oracle class的资料库新增功能
MailSent mailSend = new
MailSent(pwd,attch,NameNsf,Subject,hander,name);
mailSend.start(); //调用MailSent class的寄信功能
}
/*
上述 transFormNew function web api 主要功能是新增一张单子,
并在新增完毕之後寄信给相关负责人。
*/
}
-----------------------------------------------------------------------------------------------------------------
小弟的问题如下:
在 transFormNew web api 下调用 oracle class的 InsertNewTransFrom 的方法 和
MailSent 物件时 若发生了例外,如SQLException 或 NotesException,那麽如何
在 web api 内 补捉这些例外并把这些例外讯息回传给client ?
--
阴律无情!是的,犯邪淫者,小如手淫、婚前性行为
均会遭折福减寿之恶报。国考者更不能犯淫邪,
否则文昌帝君会除去功名,不信请看此忏悔文:
http://lustwarn.blogspot.tw/
阴律无情!是的,犯邪淫者,若不忏悔发心改过永不再犯,
死後必入邪淫地狱,不信请看;
http://goo.gl/tchBZY
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 113.185.7.126
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1447663086.A.04A.html
※ 编辑: u9423504 (113.185.7.126), 11/16/2015 16:47:34
※ 编辑: u9423504 (113.185.7.126), 11/16/2015 16:52:20
1F:→ ssccg: 首先你底层物件要把exception throw出来,你都catch了外层 11/16 16:58
2F:→ ssccg: 就不知道了,再来看你是要在transFormNew接住产生Response 11/16 17:01
3F:→ ssccg: 还是用jersey的例外处理机制去定义处理方法 11/16 17:02
4F:→ APE36: 要看你Exception出来的结果要去处理什麽再去定义实作方式 11/18 21:32