我试图在Liferay-7Portlet中使用ApacheCXF Web服务,在linux环境中出现以下错误。
13:39:14374错误[http-nio-4080-exec-9][status_jsp:950]com。利弗雷。门户。内核portlet。PortletContainerException:com。利弗雷。门户。内核portlet。PortletContainerException:javax。servlet。ServletException:java。lang.LinkageError:com/sun/org/apache/xpath/internal/jaxp/XPathImpl
如果我运行相同的portlet在增殖7窗口环境它是工作正常
这里是示例jsp代码(view.jsp)
<portlet:defineObjects />
<%@ page import="org.apache.cxf.endpoint.Client" %>
<%@ page import="org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory" %>
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%
String endpoint="http://*******/***-ws/soap/login?wsdl";
String method ="login";
String uname ="admin";
String pwd = "admin";
String result = "";
Object[] params = new Object[2] ;
params[0] = (Object)uname;
params[1] = (Object)pwd;
result = call(endpoint, method, params);
System.out.println("Result : "+result);
%>
<%!
public static String call(String endpoint, String method, Object[] params) {
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
try {
Client client = dcf.createClient(endpoint);
System.out.println("Client Object Create successfully :");
Object[] returnVals = client.invoke(method, params);
//extract returned value. getting 1st value as sakai ws calls returns only one value.
if(returnVals!=null && returnVals.length>0)
return (String)returnVals[0];
}
catch (Exception e) {
e.printStackTrace();
System.out.println("A connection error occurred: " + e.getClass() + ": " + e.getMessage());
}
return null;
}
%>
问题发生在Client=dcf。createClient(endpoint);
下面是我们正在使用的依赖项
==============================
cxf-core-3.1.8.jar
cxf-rt-bindings-soap-3.1.8。罐子
cxf-rt-databinding-jaxb-3.1.8。罐子
cxf-rt-frontend-jaxws-3.1.8.jar
cxf-rt-frontend-simple-3.1.8.jar
cxf-rt-transports-http-3.1.8.jar
cxf-rt-wsdl-3.1.8。罐子
尼西-3.0.3。罐子
==============================
我在Liferay 6.2中检查了相同的代码,它在windows和linux环境中都可以正常工作,但我添加了一些jar文件。
==============================
cxf-rt-bindings-xml-3.1.8。罐子
cxf-rt-ws-addr-3.1.8。罐子
cxf-rt-ws-policy-3.1.8。罐子
jaxb-impl-2.2.11.jar
jaxb-core-2.2.11。罐子
xmlschema-core-2.2.1。罐子
stax2-api-3.1.4。罐子
woodstox-core-asl-4.4.1。罐子
wsdl4j-1.6.3。罐子
==============================
请帮帮我。
谢谢
P. V. B. Raju
我的方法不同。我在Liferay实例上安装了必要的Apache CXF模块作为OSGi捆绑包,然后使用导出到OSGi容器的CXF API构建了一个简单的WS-client。作为OSGIi捆绑包安装的Apache CXF模块。
Apache CXF框架的九个元素的安装可以通过telnet连接到Apache Felix GoGo Shell来完成。Liferay 7门户运行后,可以通过执行安装$URL_CXF_BUNDLE命令来安装Apache CXF框架
有关更多信息,您可以阅读这篇文章Liferay 7:实现OSGi Style中的客户端SOAP con Apache CXF
我尝试过战争方法,效果很好。我在Liferay 7 DXP FP 32上进行了测试。
查看我的测试代码。https://github.com/mir333/cxf-test-demo
jar方法有点棘手,因为您需要在Gradle和bnd文件中列出所有必要的库。基本上,war file lib文件夹中的所有内容都需要插入到那里,如果你仍然得到一个丢失的导入消息,你需要找到一个提供包的lib并添加它。
看看这篇博文,它解释了如何做,它指的是另一篇博文,也看看它。https://web.liferay.com/web/sushil.patidar/blog/-/blogs/liferay-osgi-module-project-dependency-resolution
编辑:新工具可用于此。看看https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/adding-third-party-libraries-to-a-module#embedding-使用gradle的库确保使用了正确的gradle插件。
我的在live server上类似这样的环境文件设置。但当我在的时候 错误是 我使用这个主机和密码通过putty访问我的sshhttp://5.100.156.10:2082我很困惑。
我目前正在使用Wink 1.1.1和Spring 3.1.2将Java应用程序从WAS 7迁移到WAS 8.5.5。我正在尝试使用WAS8.5中提供的本机Wink集成,而不是使用目前WAS7中单独的Wink jar。 我得到了一个错误的服务器启动,看起来像这样: 造成原因:java.io.FileNotFound异常:类路径资源[META-INF/server/wink-core-context.
我试图通过spring工具套件和maven访问soap Web服务。 我已经使用https://spring.io/guides/gs/consuming-web-service/的源代码做到了这一点。 依赖性是 插件是 现在,我已将url更改为带有https的新链接: 我可以从浏览器访问wsdl。 我发现了错误 "执行默认目标org.jvnet.jaxb2.maven2:maven-jaxb2-
我正在尝试使用installCert获取服务器ssl证书。JAVA 在下面的链接 https://github.com/escline/InstallCert/blob/master/InstallCert.java 我可以得到一些服务器的服务器证书,但在尝试获得一些服务器证书时,我得到了下面的错误 sun.security.validator.校验异常:PKIX路径构建失败:sun.securi
我正在尝试将OpenGL与Qt一起使用。我正在遵循这个示例:http://qt-project.org/doc/qt-5.0/qtgui/openglwindow.html使用Qt 5 build for msvc2012。最后我得到了以下错误: 错误LNK2019:未解析的外部符号_imp_glClear@4在函数“public:virtual void _uthiscall OpenGLWin
我正在尝试使用SQL server上的链接服务器运行Oracle存储过程。 存储过程是,它接受参数。 在SQL Server中,我这样执行它: 我遇到了这个错误: 链接服务器“LServer”的OLE DB提供程序“OraOLEDB. Oracle”返回消息“ORA-06550:第1行,第47列: PLS-00201:必须声明标识符“2016-06-26” ORA-06550:第1行,第7列: P