Выполнить JAR-файл с использованием PLSQL - PullRequest
0 голосов
/ 11 октября 2018

У меня есть отдельная Java-программа, которая читает данные из конечной точки REST и вставляет данные в таблицу на сервере.

   package com.test.main;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.json.JSONObject;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.test.connectdb.ConDataBase;
import com.test.entity.User;

public class Main {

    public static void main(String[] args)  {

        try {


            URL url = new URL("https://jsonplaceholder.typicode.com/todos/");
            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
            conn.setRequestMethod("GET");

            conn.connect();
            System.out.println("DONE2");

            int responsecode = conn.getResponseCode();

            String inline = "";
            if(responsecode == 200){
                Scanner sc = new Scanner(url.openStream());
                while(sc.hasNext())
                {
                inline+=sc.nextLine();
                }
                System.out.println("JSON data in string format");
                System.out.println(inline);
                sc.close();

            }else{
                throw new RuntimeException("HttpResponseCode:" +responsecode);

            }

              //-----------------------------------------------------------------------
                Connection con = new ConDataBase().buildConnection();

                User[] userList = new Gson().fromJson(inline, User[].class);
                System.out.println(userList.length);
                for (User user : userList) {
                   //System.out.println(user.getCompleted());
                     String insert_date = "insert into XX_USER "
                                + "(USER_ID)"
                                + "VALUES"
                                +"('"+user.getCompleted()+"')";


                    try {

                        PreparedStatement ps_data = con.prepareStatement(insert_date);
                        ps_data.executeUpdate();
                        con.commit();
                        System.out.println("Successfully Inserted");
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        System.out.println(e.getMessage());
                    }
                }


        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



        }

}

Мне нужно запустить этот файл JAR с использованием PLSQL.Это означает, что я перенес этот jar-файл в путь к серверу Linux (/ home / rest).База данных Oracle установлена ​​на сервере.Мне нужно запустить эту банку с использованием PLSQL.Возможно ли это?

1 Ответ

0 голосов
/ 11 октября 2018

Используйте утилиту LOADJAVA для загрузки файла jar и всех других зависимостей jar во внутренний путь к классам Oracle (это отличается от пути к классу операционной системы).

Возможно, вытакже нужно изменить код на статический метод без аргументов (вместо main с аргументом строкового массива), так как это сделает вызов метода намного проще.

// package and imports
public class Main {
  public static void yourMethodName()  {
    // your code
  }
}

Тогда вам нужно использовать что-то вроде:

CREATE PROCEDURE get_todos_from_rest_service AS
  LANGUAGE JAVA NAME 'com.test.main.Main.yourMethodName()';

Чтобы создать процедуру-оболочку вокруг метода java, которую можно затем вызывать в PL / SQL.

Более подробный пример можно найти здесь: База данных Java Developer's'sРуководство - Пример применения хранимых процедур Java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...