我正在尝试运行 connectorZ JCA 1.6 Executor 实现,
为此,我下载了 Zip from github 并尝试执行客户端,
( Work Manager : java.util.concurrent.Executor 的 JCA 实现)

我能够在 Eclipse 中运行应用程序,(在解决了一些依赖问题之后)
jsp 页面加载正常,链接“执行 5 个阻塞任务”,
当我点击特定链接时,出现以下异常:

Caused by: java.lang.NullPointerException
    at org.connectorz.threading.ThreadsResource.overload(ThreadsResource.java:72) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_40]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_40]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_40]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_40]

这里的问题是 executorFactory 为空,我不确定 jndi_name " jca/workmanager "。
@Resource(name="jca/workmanager")
WorkExecutorFactory executorFactory; //NPE at executorFactory(not injecting).

我是否缺少与 jndi 或任何资源文件相关的任何配置?
我该如何解决这个问题?

最佳答案

从另一个已部署的模块访问JCA模块需要三个步骤:

  • 将JCA模块部署到您的应用程序服务器
  • 为以前部署的JCA模块
  • 创建连接池
  • 为JCA模块创建一个JNDI条目,该条目指定要使用的连接池。

  • 就您而言,我认为您没有执行第2步和第3步。

    可以免费选择Connection-Pool的JNDI-Name,但是第三步的JNDI-Name必须与@ Resource-Annotation(= jca/workmanager)给出的JNDI-Name相同。

    执行上述步骤的方式取决于您的ApplicationServer。

    请注意,当前在RAR模块的ConnectionFactory类中存在一个包含@ Size-Annotation的错误。要解决此问题,只需将其注释掉即可。

    10-08 14:44