Выполнить файл jar с помощью PLSQL

У меня есть отдельная 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. Является ли это возможным?

Взгляните на этот документ docs.oracle.com/cd/B28359_01/java.111/b31225/…

Brank Victoria 11.10.2018 12:00

Я пробовал это, но он не поддерживает другие библиотеки Java, такие как JSON, import java.net.HttpURLConnection; import com.google.gson.Gson;

Malan Jayanka 11.10.2018 12:47

Вы пробовали создать его как Исходный объект Java?

czdepski 11.10.2018 13:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
2 181
1

Ответы 1

Используйте Утилита 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 для баз данных - пример приложения с хранимыми процедурами Java

Другие вопросы по теме