如何通过kafka.producer将消息从Javaservlet发送到kafka

gg58donl  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(360)

我想从http post获取数据,所以在servlet中我实现了如下dopost

  1. package PostHandler;
  2. import java.io.IOException;
  3. import java.util.Enumeration;
  4. import java.util.Properties;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.annotation.WebServlet;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import kafka.producer.ProducerConfig;
  11. import kafka.javaapi.producer.ProducerData;
  12. @WebServlet(description = "This is to handle the posted data on HTTP", urlPatterns = { "/ClsPostHandler" })
  13. public class ClsPostHandler extends HttpServlet
  14. {
  15. protected void doPost(HttpServletRequest request,
  16. HttpServletResponse response) throws ServletException, IOException
  17. {
  18. final kafka.javaapi.producer.Producer<Integer, String> producer;
  19. final Properties props = new Properties();
  20. props.put("serializer.class", "kafka.serializer.StringEncoder");
  21. props.put("zk.connect", "localhost:2181");
  22. producer = new kafka.javaapi.producer.Producer<Integer, String>(
  23. new ProducerConfig(props));
  24. String messageStr = new String("Testing to publish on testing topic");
  25. producer.send(new ProducerData<Integer, String>("testing",
  26. messageStr));
  27. }
  28. }

它会引发如下运行时错误:

  1. Jul 26, 2013 11:57:08 AM org.apache.catalina.core.StandardWrapperValve invoke
  2. SEVERE: Servlet.service() for servlet [PostHandler.ClsPostHandler] in context with path [/JavaRest] threw exception [Servlet execution threw an exception] with root cause
  3. java.lang.NoClassDefFoundError: kafka/javaapi/producer/Producer
  4. at PostHandler.ClsPostHandler.doPost(ClsPostHandler.java:105)
  5. at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
  6. at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
  7. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
  8. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
  9. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
  10. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
  11. at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
  12. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
  13. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
  14. at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
  15. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
  16. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
  17. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
  18. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
  19. at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
  20. at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
  21. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
  22. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  23. at java.lang.Thread.run(Thread.java:679)

出了什么问题,有人能帮我理解吗?
提前谢谢你的时间。
更新:下面是我的 .classpath 文件内容

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <classpath>
  3. <classpathentry kind="src" path="src"/>
  4. <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-6-openjdk-amd64">
  5. <attributes>
  6. <attribute name="owner.project.facets" value="java"/>
  7. </attributes>
  8. </classpathentry>
  9. <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v7.0">
  10. <attributes>
  11. <attribute name="owner.project.facets" value="jst.web"/>
  12. </attributes>
  13. </classpathentry>
  14. <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
  15. <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
  16. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/apache-rat-0.8.jar"/>
  17. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/apache-rat-core-0.8.jar"/>
  18. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/apache-rat-tasks-0.8.jar"/>
  19. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/commons-cli-1.2.jar"/>
  20. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/commons-collections-3.2.jar"/>
  21. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/commons-compress-1.0.jar"/>
  22. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/commons-io-1.4.jar"/>
  23. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/lib_managed/scala_2.8.0/compile/commons-lang-2.1.jar"/>
  24. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/lib_managed/scala_2.8.0/compile/zookeeper-3.3.4.jar"/>
  25. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/lib_managed/scala_2.8.0/compile/zkclient-0.1.jar"/>
  26. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/lib_managed/scala_2.8.0/compile/snappy-java-1.0.4.1.jar"/>
  27. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/lib_managed/scala_2.8.0/compile/log4j-1.2.15.jar"/>
  28. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/lib_managed/scala_2.8.0/compile/jopt-simple-3.2.jar"/>
  29. <classpathentry kind="lib" path="/usr/local/kafka/kafka-0.7.2-incubating-src/core/target/scala_2.8.0/kafka-0.7.2.jar"/>
  30. <classpathentry kind="lib" path="/usr/local/scala-2.9.1.final/lib/jline.jar"/>
  31. <classpathentry kind="lib" path="/usr/local/scala-2.9.1.final/lib/scala-library.jar"/>
  32. <classpathentry kind="output" path="build/classes"/>
  33. </classpath>
sdnqo3pr

sdnqo3pr1#

必须将kafka jar放在运行时类路径上

相关问题