我目前正在使用Documentum 7.0开发xCP 2.0项目,而我正试图在工作流程中运行Java Service。当我使用的函数只是返回" some_string"时,Java服务正常工作。串。但是只要我尝试实际的东西并使用documentum特定的对象,如:
IDfSession mySession = getSession();
我在这里得到了这些例外:
java.lang.RuntimeException:无法调用方法' test'从 界面'类com.gemp1.Test'来自BOF模块' gemp1_xCPJava'在 流程模板:' Peticion de Nuevo Producto v2' - 活动:'执行 Java服务'。工作项目:' 4a015abd80004959'工作流程:' Peticion de Nuevo Producto v2 2014-12-18' - ' 4d015abd8000411e'活动:'执行 Java Service' - ' 4c015abd8002e358'流程:' Peticion de Nuevo Producto v2' - ' 4b015abd8002c56c' java.lang.Exception的: java.lang.RuntimeException:无法调用方法' test'从 界面'类com.gemp1.Test'来自BOF模块' gemp1_xCPJava'在 com.documentum.bps.outbound.AbstractService.execute(AbstractService.java:98) 在 com.documentum.bpm.services.BPSIntegrationFramework.executeService(BPSIntegrationFramework.java:260) 在 com.documentum.bpm.services.BPSIntegrationFramework.executeMethod(BPSIntegrationFramework.java:92) 在 com.documentum.bpm.services.BPSIntegrationMethod.executeMethod(BPSIntegrationMethod.java:26) 在 com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:129) 在 com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:355) 在 com.documentum.bpm.rtutil.GenericWorkflowMethod.execute(GenericWorkflowMethod.java:70) 在com.documentum.mthdservlet.DfMethodRunner.runIt(未知来源)
在com.documentum.mthdservlet.AMethodRunner.runAndReturnStatus(未知 来自)com.documentum.mthdservlet.DoMethod.invokeMethod(未知 来自)com.documentum.mthdservlet.DoMethod.doPost(未知 来源)at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)at at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)at at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) 在 org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) 在 org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) 在 org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) 在 org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:598) 在 org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447) 在java.lang.Thread.run(Thread.java:662)引起: java.lang.RuntimeException:无法调用方法' test'从 界面'类com.gemp1.Test'来自BOF模块' gemp1_xCPJava'在 com.documentum.bps.outbound.bof.runtime.BOFClient.invokeMethod(BOFClient.java:121) 在 com.documentum.bps.outbound.bof.runtime.BofModuleService.executeServiceOperation(BofModuleService.java:133) 在 com.documentum.bps.outbound.AbstractService.executeServiceInternal(AbstractService.java:122) 在 com.documentum.bps.outbound.AbstractService.execute(AbstractService.java:79) ... 32更多引起:java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597)at com.documentum.bps.outbound.bof.runtime.BOFClient.invokeMethod(BOFClient.java:112) ... 35更多引起:java.lang.NullPointerException at com.documentum.fc.client.DfSingleDocbaseModule.getSession(DfSingleDocbaseModule.java:58) 在com.gemp1.Test.test(Test.java:11)... 40多个
我的Java课程:
package com.gemp1;
import com.documentum.fc.client.*;
import com.documentum.fc.common.DfException;
public class Test extends DfSingleDocbaseModule {
public String test() {
String result = "Hello12345";
return result;
}
public String[] getUsers() throws DfException {
String docbaseUsers[] = new String[200];
IDfCollection coll = null;
IDfSession mySession = getSession();
String myQuery = "select user_name from dm_user";
IDfQuery myDFQuery = new DfQuery(myQuery);
coll = myDFQuery.execute(mySession, IDfQuery.DF_QUERY);
int i=0;
while (coll.next()) {
docbaseUsers[i] = coll.getString("user_name");
i++;
}
return docbaseUsers;
}
}
最后是我的javamodule文件:
<?xml version="1.0" encoding="UTF-8"?>
<nsJavaModule:JavaModule xmlns:nsJavaModule="http://xcp.emc.com/javamodule" urn="urn:gemp1:com.emc.xcp.artifact.javamodule.category:Artifacts/Java Modules/xCPJava.javamodule" categoryId="com.emc.xcp.artifact.javamodule.category" name="xCPJava" label="xCPJava" implementationClass="com.gemp1.Test">
<implementationJars contentPath="content/modules/xCPJava.jar"/>
<implementationJars contentPath="content/modules/dfc.jar"/>
</nsJavaModule:JavaModule>
我错过了什么吗?