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://www.ptt.cc/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
→ ssccg: 首先你底層物件要把exception throw出來,你都catch了外層 11/16 16:58
→ ssccg: 就不知道了,再來看你是要在transFormNew接住產生Response 11/16 17:01
→ ssccg: 還是用jersey的例外處理機制去定義處理方法 11/16 17:02
→ APE36: 要看你Exception出來的結果要去處理什麼再去定義實作方式 11/18 21:32