Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在oracle数据库中使用Kafka Producer_Java_Oracle_Apache Kafka_Kafka Producer Api_Loadjava - Fatal编程技术网

Java 在oracle数据库中使用Kafka Producer

Java 在oracle数据库中使用Kafka Producer,java,oracle,apache-kafka,kafka-producer-api,loadjava,Java,Oracle,Apache Kafka,Kafka Producer Api,Loadjava,我试图使用自定义java类将Oracle消息直接发布到Kafka broker,为此我在Oracle中上载了所需的库,并使用Oracle函数/过程调用java函数。基本java函数工作正常,但Kafka被初始化并使用的函数抛出未捕获异常。即使我将整个函数体放在try-catch块中,但仍然没有将自定义异常作为消息获取 我有Oracle 12C,它有JVM版本1.8 此消息在java函数调用java.lang.NoClassDefFound错误时在oracle SQL提示符上弹出 我为我的自定义类

我试图使用自定义java类将Oracle消息直接发布到Kafka broker,为此我在Oracle中上载了所需的库,并使用Oracle函数/过程调用java函数。基本java函数工作正常,但Kafka被初始化并使用的函数抛出未捕获异常。即使我将整个函数体放在try-catch块中,但仍然没有将自定义异常作为消息获取

我有Oracle 12C,它有JVM版本1.8

此消息在java函数调用java.lang.NoClassDefFound错误时在oracle SQL提示符上弹出

我为我的自定义类创建了一个jar文件,并将其与相关库一起上传到oracle DB。 我使用下面的命令上传了库文件

loadjava -u <user>/<Password>@DB -resolve <library>.jar 
请说明如何从oracle内部初始化Kafka Producer并开始发送消息

如何调试oracle数据库中加载的java函数

下面给出了我的自定义类

public class KafkaPublisher { 
static ProducerRecord<String, String> PR = null; 
static Producer<String, String> producer = null; 
static Properties prop = new Properties(); 

public static void init() { 
prop.put("bootstrap.servers", "111.11.11.11:9092"); 
prop.put("acks", "1"); 
prop.put("retries", "0"); 
prop.put("batch.size", "16384"); 
prop.put("linger.ms", "1"); 
prop.put("buffer.memory", "33554432"); 
prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 
prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); 

} 

public static String push(String data) { 
String response = "No responce"; 
init(); 
try { 
producer = new KafkaProducer<String, String>(prop); 
PR = new ProducerRecord<String, String>("topic1", data); 
Future<RecordMetadata> future = producer.send(PR); 
RecordMetadata rMetaData = future.get(); 
response = "Current Offset: " + rMetaData.offset(); 
} catch (Exception e) { 
response = "Message: " + e.getMessage() + " Cause: " + e.getCause(); 
} 
return response; 
} 

public static String getProperties(String msg) { 
return "My message: " + msg + prop.toString(); 
} 
}
函数getPropertiesString msg工作正常,但函数 pushString数据不工作


确切地说,您已将哪些库加载到数据库中? 对我来说,我错过了slf4j简单jar库

您还需要向dbuser授予以下权限:

exec dbms_java.grant_permission( <DB_USER>, 'SYS:javax.management.MBeanServerPermission', 'createMBeanServer', '' )
exec dbms_java.grant_permission( <DB_USER>, 'SYS:javax.management.MBeanTrustPermission', 'register', '' )
exec dbms_java.grant_permission( <DB_USER>, 'SYS:javax.management.MBeanPermission', '*', '*' )

NoClassDefFoundError应该告诉您找不到哪个类。这将表明哪个库丢失/未正确加载。@除了此oracle之外,MichalBorowiecki没有显示任何其他消息,这就是调试变得很麻烦的原因…@rahul找到解决方案了吗?