我有一个只包含Java代码的过程的PL/SQL文件。在PL/SQL中重写java代码的挑战
以下是声明的Java代码开始前:
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED "fnd_log_file_handler" AS
该Java代码来执行各种文件操作(复制,检查长度,迭代文件的数组,检查是否一个文件对象是一个目录,等等)和DOM操作/ XML解析(从给定的XML字符串创建XML文档对象)。此外,它还使用返回Process对象的Runtime.exec()java方法调用外部命令。以下是进口包装:
import java.nio.channels.FileChannel;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
还有一种方法会被重复调用。它返回与特定名称模式匹配的文件夹中的文件列表。它使用比较器来过滤结果。以下是代码片段
/**
* This API returns list of files in a folder matching particular name pattern.
* @param path - Path to the directory to get list of files
* @param pattern - Pattern for file names to look for. All files with name
* starting with this pattern will be returned from the API
* @return - Sorted list of files.
*/
private static File[ ] listFilesInOrder (String path, String pattern,
Comparator <File> compareFunc)
{
BASEFILENAME = pattern;
File lFile = new File (path);
File[] arrayFileList = lFile.listFiles(new FilenameFilter() {
public boolean accept(File f, String s) { return s.startsWith(BASEFILENAME + INDEX_SPERATOR); }
});
if(arrayFileList!=null)
{
Arrays.sort(arrayFileList, compareFunc);
}
return arrayFileList;
}
我期待在将来从数据库中删除JVM的情况下删除Java依赖项。是否可以编写PL/SQL代码来包含所有这些逻辑?如果不是,我的其他选择是什么?任何反馈意见。
如果将来JVM从数据库中被删除? – Kayaman
@Kayaman Java是Oracle数据库中的一个可选组件,不幸的是,DBA不再需要删除它。这很愚蠢,但它发生了,所以尽可能避免Java依赖是明智的做法。 –
@JonHeller对于这样的情况,是否有解决方法?此代码是否仍然可以作为独立的Java文件存在,可以从DB中调用?我不确定在PL/SQL中翻译所有这些逻辑是否可行。 – Pha3drus