2011-11-23 89 views
0

這段代碼是完全錯誤的嗎?我正在爲一個uni項目製作一個web service。可以在web service方法中連接到數據庫。 連接的代碼在標準SE項目中工作,但在Web服務中NetBeans不允許我部署該項目時,它表示無法創建WSDL在NetBeans上使用Java的Web服務

/* *要更改此模板,請選擇工具|模板 *並在編輯器中打開模板。 */ package org.me.calculator;

import com.mysql.jdbc.Statement; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import javax.jws.WebService; 
import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.ejb.Stateless; 

/** 
* 
* @author ericman 
    */ 
    @WebService(serviceName = "CalculatorWS") 
    @ Stateless() 
    public class CalculatorWS { 


/** 
* Web service operation 
*/ 
@WebMethod(operationName = "UppDateBook") 
public String UppDateBook(@WebParam(name = "name") String name) throws SQLException { 
    //TODO write your implementation code here: 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost/bookcatalog","ericman","ericman"); 
    Statement stmt = (Statement) con.createStatement(); 
    String insert = "INSERT INTO `bookcatalog`.`books` (`name`, `isbn`, `price`, `publisher`, `img`) VALUES ('BookOne', '12456789', '45', 'publisher', 'httpfile');"; 
    int numUpdate = stmt.executeUpdate(insert); 
    stmt.close(); 
    return null; 
} 

}

錯誤消息

重度:無法找到adpater端點 警告:MEX0008:無法使用協議SOAP_1_1在http://localhost:8080/WebSercviceOne/WebSercviceOne?WSDL/mex解析從服務器返回的元數據。繼續嘗試。 信息:[錯誤]服務器返回的HTTP響應代碼:405對於URL:http://localhost:8080/WebSercviceOne/WebSercviceOne?WSDL 無法讀取WSDL文檔:http://localhost:8080/WebSercviceOne/WebSercviceOne?WSDL,因爲1)找不到文檔;/2)文件不能被讀取; 3)文檔的根元素不是。 信息:[錯誤] failed.noservice =在提供的WSDL中找不到wsdl:服務: 至少需要提供一個至少有一個服務定義的WSDL。 信息:無法解析WSDL。 INFO:調用的wsimport與http://localhost:8080/WebSercviceOne/WebSercviceOne?WSDL 重度:的wsimport失敗 INFO:地鐵監測ROOTNAME成功設置爲:AMX:PP = /月/服務器紋[服務器],類型= WSEndpoint,名稱= WebSercviceOne-WebSercviceOnePort 警告:集裝箱的有機.glassfish.webservices.JAXWSContainer @ 7339ea2c不支持類com.sun.xml.ws.api.server.Module 信息:WS00019:部署了EJB端點 ServiceOne正在監聽地址http://ericman-PC:8080/WebSercviceOne/WebSercviceOne INFO:WEB0671:正在加載應用程序[ServiceOne ]在[/ ServiceOne] 信息:ServiceOne已成功部署在511毫秒。 信息:解析WSDL ...

+0

WebServices可以訪問數據庫肯定,我自己做。我們需要更多關於例外的細節。也許一個堆棧跟蹤可以幫助嗎? 我真的懷疑這就是失敗的原因。 – javydreamercsw

+0

'爲以下WSDL生成工件時出錯http:// localhost:8080/CalculatorWS/CalculatorWS?WSDL 可能的原因可能是在應用程序未配置爲安全時調用https這是當我嘗試測試Web服務 – helloThere

+0

注意:你應該注入DataSource/EntityManager。不要調用DriverManager.getConnection。 – Puce

回答

0

不能拋出異常這樣,你需要創建自己的異常尊重論文要點: 1)您的自定義異常是擴展異常類。 2)將標記@WebFault(name =「exception name」)添加到您的異常類 3)創建一個bean,保存此bean具有帶所有構造函數和getter的String參數的exceptio消息。 4)您的異常類需要具有該bean的屬性。 5)必須有兩個構造函數,一個帶有消息和一個bean的實例,另一個帶有消息,bean的實例和Throwable對象表示問題。