java - 使用 PLSQL 执行 jar 文件
问题描述
我有一个独立的 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();
}
}
}
我需要使用 PLSQL 运行这个 jar 文件。这意味着我已将此 jar 文件转移到 Linux 服务器路径(/home/rest)中。Oracle 数据库安装在服务器中。我需要使用 PLSQL 运行这个 jar。可能吗?
解决方案
使用该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 中调用它。
可以在此处找到更详细的示例:Database Java Developer's Guide - Java Stored Procedures Application Example
推荐阅读
- ios - 下载音频文件并保存在照片库中,最后播放该音频
- ios - 在滚动视图中滚动时如何更新 SCIChart 的实时数据?
- python - 如何在python中修剪文本和删除额外信息
- python-3.x - 根据另一列设置新列,3 个选项
- webpack - 获取 NextJS withSass() 生成的块的文件名
- c++ - 如何使用 std::vector 返回 WCHAR ** 参数?
- java - 未记录的 API 声纳规则在 sonarqube 6.5 中不起作用?
- types - DAML 是否有 Hoogle 等价物?
- python - 为什么不在我的所有列表上运行这个循环?
- c++ - 如何将二叉树附加到另一个