0
我已經爲我的客戶端(android應用程序)編寫了一個REST風格的web api來使用。 我需要實現另一個應用程序,一個本地桌面應用程序,它訪問已爲服務器端實現的Databases
類。如何在本地運行Web應用程序代碼?
我不知道該怎麼辦。
具體來說,這個類服務器端:
public Database(String TableName, String KeyName) throws SQLException, NamingException {
mTableName = TableName;
mKeyName = KeyName;
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/nasdaq_companies");
}
現在有被拋出(NoInitialContextException)一個異常,是非常合情合理的,因爲我在它失蹤的context.xml或明確這個資源缺少
<Resource name="jdbc/nasdaq_companies" auth="Container"
type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/nasdaq_companies"
username="*****" password="*****" maxActive="20" maxIdle="10" maxWait="-1"/>
假設服務器== localhost,如何將上下文資源添加到本地Java應用程序? (或者,如何解決這個問題?)
這就是我的意思,是的。但是請注意,4行代碼被複制,並且最重要的是方法查找應該返回一個對象,這是最後一個方法的錯誤,我假設沒有發現任何東西,然後返回null,但我不確定(雖然也可能通過?)。如果你可以在你的答案中解決這個問題,我會很感激,現在我會盡量多謝你幫助你,可能爲我節省了很多時間:) –
編輯返回null或拋出異常。至於重複的行,他們只是一個例子,如果你願意的話,你可以放置多個數據源(一個就足夠了),我也用註釋編輯它。 – chehh984
確定有一個問題:如果我調用initContext.lookup(「jdbc/SomeDB」)的類本身,那麼它在本地工作,但不在服務器上(它引發NameNotFoundException:名稱[jdbc/nasdaq_companies]未綁定在此上下文中。無法找到[jdbc]。)。如果我使用ctx.lookup(「java:comp/env/jdbc/nasdaq_companies」),那麼它在服務器上工作,但不在本地:(我需要這個類在本地和服務器上工作:P –