在 netbeans 中添加外部 jar 以在 glassfish 中提供休息服务

Adding external jars in netbeans for rest service in glassfish

我正在尝试在 Netbeans 8.1 中使用 Web App 项目类型创建一个简单的 REST 服务,JDK 1.8 并将部署在 Glassfish Server 4.1.1. 我需要使用外部库来提供服务功能,即 tika 和 lucene。

我的问题是,如果我在我的 Nb 项目的库中添加任何 jar(右键单击 -> 添加 jar/folder: tika-app-1.12.jar),我会得到:

Grave: Class [ javax/cache/configuration/Configuration ] not found. Error while loading [ class org.apache.cxf.jaxrs.client.cache.CacheControlFeature ]

Advertencia: StandardWrapperValve[BusquedaApplication]: Servlet.service() for servlet BusquedaApplication threw exception java.lang.NullPointerException at org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInInterceptor.filter(JAXRSBeanValidationInInterceptor.java:64) at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132) ...

我已经尝试在 glassfish/libglassfish/domains/<mydomain>/libglassfish/domains/<mydomain>/lib/ext 中添加 jar 文件,但错误仍然存​​在。 请注意,只要我将 jar 添加到 Nb 库文件夹中,就会出现这些错误,无论我是否在我的代码中引用它们。

如果我删除 jar,服务将无误地部署,我也可以正确调用它并获得适当的响应。

非常感谢任何有关处理这些外部库的正确方法的见解。

好的,我想我明白了。

能够使用外部库:

  • 不要将它们打包到 war 文件中。在 Nb 中:转到 Project Properties -> Libraries -> Compile-time libraries。然后取消选中所有列出的库的包框。

  • 将所有 .jar 库复制到 <domains-folder>/<your-domain-name>/lib。请注意,您的域文件夹可能不在 Glassfish 的安装目录中。您可以检查 Nb 中的服务器属性(转到 Services tab -> right-click Glassfish server -> Properties -> Common -> Domains Folder

  • 在 Servlet 中使用委托反转模型。为此,请在 glassfish-web.xml 文件的 class-loader 元素中设置 delegate="false"

这对我有用。我希望我能帮助其他处于类似情况的人。