クライアント(アンドロイドアプリ)にRESTful Web APIを作成しました。 別のアプリケーション(ローカルデスクトップアプリケーション)を実装する必要があります。これは、サーバー側にすでに実装されているクラスDatabases
にアクセスします。ローカルにウェブアプリケーションコードを実行するにはどうすればよいですか?
私は方法がわかりません。具体的に
、サーバ側のために、このクラス:
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");
}
今、このリソースが
が欠落している、私はその中に、具体的context.xmlにまたはが不足していますので、完璧な理にかなっている(NoInitialContextException)スローされた例外があります<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またはスロー例外のために編集されます。重複した行については、複数のデータソースを置くことができるだけの例です(1つあれば十分です)。コメントでも編集しました。 – chehh984
OK問題があります:クラス自体で、initContext.lookup( "jdbc/SomeDB")を呼び出すと、ローカルでは動作しますが、サーバー上では動作しません(NameNotFoundExceptionをスローします:Name [jdbc/nasdaq_companies] 。[jdbc]が見つかりません。) ctx.lookup( "java:comp/env/jdbc/nasdaq_companies")を使用すると、サーバ上では動作しますが、ローカルでは動作しません:(このクラスはローカルとサーバの両方で動作する必要があります:P –