寫了一個程序:根據狀態位讀取SQLserver 中的一張表,下載其中一個字段的值,這個值是XML類型的,而後把這個XML文件的內容插入到另外一Oracle數據庫,並更新SQLServer表的標誌位,表示這條記錄已經更新過。html
個人思路是用java寫個webservice,而後再用C#寫個windows 服務每過30分鐘運行一次。用java寫業務是由於我以爲java操做oracle相對方便一點。用C#寫windows服務是是由於我只知道能用C#寫windows service,後臺靜默運行挺好。java
看似簡單的程序,最後真正實現需求竟然也花了3天時間,由於遇到了幾個小問題,而且還有未解決的。web
接下來羅列一下遇到的問題。sql
Q1 java解析XML內容數據庫
已解決:參考http://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html windows
用的是第一種DOM方法服務器
Q2 java jdbc鏈接Oracle數據庫問題java-web
已解決:關鍵代碼以下oracle
String driverClassName = "oracle.jdbc.driver.OracleDriver";eclipse
String url = "jdbc:oracle:thin:@//192.168.101.22:1521/orcl";
注意,java代碼裏的sql語句最後不要寫分號,不然會報錯 java.sql.SQLSyntaxErrorException: ORA-00911: 無效字符 。
Q3 java 怎麼寫一個webservice
已解決:
參考:http://javapapers.com/web-service/java-web-service-using-eclipse/
寫好java 類之後(Dynamic Web Project工程下),直接右擊新建webservice。
須要注意的是,要生成的方法必須是小寫字母開頭的,不然就沒法調用了。java裏方法要小寫開頭!
我用java 寫好了一個Service類。接下來就是
Q4 下載好了XML文件,而後在解析這個XML文件時,發生了異常:
xml中1字節的UTF-8序列的字節1無效([字符編碼]Invalid byte 1 of 1-byte UTF-8 sequence
引發這個問題的緣由是,java下載XML文件默認編碼格式是GBK,而咱們用DOM去解析xml文件的時候,用的是UTF-8的方式去解析,編碼對不上,因此不能識別xml文檔。
http://bbs.itheima.com/thread-29901-1-1.html
http://blog.csdn.net/zhangzhikaixinya/article/details/7727938 這種方法我沒試過
代碼實現
1 /** 2 * 寫日誌 3 * @param logpath 日誌文件路徑 4 * @param logtext 日誌內容 5 */ 6 public void WriteLog(String logpath,String logtext) 7 { 8 File file = new File(logpath); 9 10 try 11 { 12 //Writer out = new FileWriter(file,true); 13 OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file, true),"utf-8"); 14 out.write(logtext); 15 out.close(); 16 } catch (IOException e) 17 { 18 // TODO Auto-generated catch block 19 e.printStackTrace(); 20 } 21 }
Q5 寫好了程序,發佈本地,測試經過,發佈到遠程服務器上,調用提示404 找不到資源。我用C#調用的java webservice。
未解決……
暫時就本地運行。