如何在本地运行Web应用程序代码?

时间:2016-05-25 17:07:00

标签: java mysql jdbc server

我为我的客户端(Android应用程序)编写了一个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");
}

现在有一个异常抛出(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应用程序? (或者,我如何解决这个问题?)

1 个答案:

答案 0 :(得分:1)

如果您正在谈论运行控制台应用程序之类的东西,我通过调用Main中的方法手动设置上下文来解决它:

public static void main( String[] args ) {

        setupInitialContext();

        Context initContext = new InitialContext();        
        DataSource dataSource = (DataSource) initContext.lookup("jdbc/SomeDB");

}

编辑:

您可以先在Main中调用此方法,然后再获取这些数据源

private void sendRequestWithHttpClient(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet("");
                    HttpResponse httpResponse = httpClient.execute(httpGet);
                    if(httpResponse.getStatusLine().getStatusCode()==200){
                        HttpEntity entity = httpResponse.getEntity();
                        String response = EntityUtils.toString(entity,"utf-8");
                        parseJSON(response);
                    }
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void parseJSON(String jsonData) {
        try {
            JSONArray jsonArray = new JSONArray(jsonData);
            String[] a = new String[jsonArray.length()];
            String[] b = new String[jsonArray.length()];
            for (int i=0 ; i < jsonArray.length() ; i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                String title = jsonObject.getString("title");
                String main = jsonObject.getString("main");
                a[i] = title;
                b[i] = main;
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
PS:我认为我在StackOverflow上也发现了这种方式,但老实说不记得哪里:(