Я разрабатываю гибридное приложение с использованием IBM MobileFirst Platform Studio (v6.3 - бывший IBM Worklight).IBM MobileFirst - NoClassDefFoundError
Поскольку существует требование вызвать Oracle хранимые процедуры PL/SQL, содержащие параметры OUT, я использовал предлагаемое здесь решение How to get OUT parameter when invoking a stored procedure? - вызов хранимой процедуры в java и вызов класса java из процедуры адаптера.
Я добавил файл storedProcedure.java src в папку server/java внутри моего проекта. Я также добавил commons-dbutils-1.6.jar и ojdbc6.jar в папку server/lib. Класс StoredProcedure построен на сохранении и развертывании на сервере разработки MobileFirst. Я также определил нужный источник данных в server.xml, но когда я попытаюсь протестировать процедуру адаптера, которую я выполнил (R-клик по адаптеру Запуск as -> Развертывание MobileFirstAdapter, R-клик по адаптеру Запуск as -> Invoke MobileFirst Procedure) Я получаю эту ошибку сообщение:
[ERROR ] FWLSE0099E: An error occurred while invoking procedure [project MxP]StoredProcedure/pretragaVozilaFWLSE0100E: parameters: [project MxP]
invocation of javascript function 'pretragaVozila' has failed: ResultSetHandler
FWLSE0101E: Caused by: [project MxP]java.lang.NoClassDefFoundError: ResultSetHandlerjava.lang.RuntimeException:
invocation of javascript function 'pretragaVozila' has failed: ResultSetHandler
at com.worklight.integration.js.JavaScriptProcedureInvoker.invoke(JavaScriptProcedureInvoker.java:52)
at com.worklight.integration.model.ProcedureInvoker.invokeProcedure(ProcedureInvoker.java:54)
at com.worklight.integration.model.Procedure.invoke(Procedure.java:166)
at com.worklight.integration.services.impl.DataAccessServiceImpl.callProcedureInternal(DataAccessServiceImpl.java:593)
at com.worklight.integration.services.impl.DataAccessServiceImpl.callProcedure(DataAccessServiceImpl.java:539)
at com.worklight.integration.services.impl.DataAccessServiceImpl.access$100(DataAccessServiceImpl.java:58)
at com.worklight.integration.services.impl.DataAccessServiceImpl$3.execute(DataAccessServiceImpl.java:433)
at com.worklight.core.auth.impl.AuthenticationServiceBean.accessResource(AuthenticationServiceBean.java:76)
at com.worklight.integration.services.impl.DataAccessServiceImpl.invokeProcedureInternal(DataAccessServiceImpl.java:430)
at com.worklight.integration.services.impl.DataAccessServiceImpl.invokeProcedure(DataAccessServiceImpl.java:139)
at com.worklight.server.dev.InvokeProcedureHandler.handle(InvokeProcedureHandler.java:85)
at com.worklight.server.dev.DevRootServlet.service(DevRootServlet.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1274)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:767)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:469)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:127)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:88)
at com.worklight.core.auth.impl.AuthenticationFilter.doFilter(AuthenticationFilter.java:151)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:85)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:968)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1056)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4553)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:301)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:954)
at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:266)
at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:776)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: ResultSetHandler
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
at java.lang.Class.getDeclaredMethods(Class.java:1860)
at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:315)
at org.mozilla.javascript.JavaMembers.discoverAccessibleMethods(JavaMembers.java:302)
at org.mozilla.javascript.JavaMembers.reflect(JavaMembers.java:419)
at org.mozilla.javascript.JavaMembers.<init>(JavaMembers.java:43)
at org.mozilla.javascript.JavaMembers.lookupClass(JavaMembers.java:807)
at org.mozilla.javascript.NativeJavaClass.initMembers(NativeJavaClass.java:49)
at org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:44)
at org.mozilla.javascript.NativeJavaClass.<init>(NativeJavaClass.java:43)
at org.mozilla.javascript.NativeJavaClass.<init>(NativeJavaClass.java:39)
at org.mozilla.javascript.WrapFactory.wrapJavaClass(WrapFactory.java:134)
at org.mozilla.javascript.NativeJavaPackage.getPkgProperty(NativeJavaPackage.java:133)
at org.mozilla.javascript.NativeJavaPackage.get(NativeJavaPackage.java:82)
at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2184)
at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1492)
at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1485)
at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1239)
at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:815)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:109)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:107)
at com.worklight.integration.js.JavaScriptManager.callFunction(JavaScriptManager.java:267)
at com.worklight.integration.js.JavaScriptManager.invokeFunction(JavaScriptManager.java:241)
at com.worklight.integration.js.JavaScriptManager.invokeFunction(JavaScriptManager.java:211)
at com.worklight.integration.services.impl.AdapterManagerImpl.invokeFunction(AdapterManagerImpl.java:124)
at com.worklight.integration.js.JavaScriptProcedureInvoker.invoke(JavaScriptProcedureInvoker.java:42)
... 30 more
Caused by: java.lang.ClassNotFoundException: ResultSetHandler
at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:436)
at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:411)
... 59 more
com.worklight.common.log.filters.ErrorFilter
что еще я должен сделать так, чтобы служба бэкенд находит Викисклада dbutils-1.6.jar?
Я запускаю Eclipse Версия: Luna Service Release 1 (4.4.1) на Windows 7 64bit с 64-битной Java v1.7.0.72, подключающаяся к Oracle Server 11g.
ли на самом деле развернут файл Java? Вы можете проверить, найдя файл .war в папке bin, откройте его (вы можете переименовать его в .zip) и посмотреть, существует ли файл внутри. –
Привет, Идан! Да, есть файлы классов и все файлы .jar внутри проекта .war в папке bin ... – user115524
Если я поместил файлы src commons-dbutils в файл server/java и скомпилировал их, я смогу сделать еще один шаг - теперь я получаю: FWLSE0101E: Вызвано: [project MxP] javax.naming.NamingException: CWWKN0008E: объект не может быть получен для имени jdbc/OracleDS.java.lang.RuntimeException: вызов функции javascript «pretragaVozila» завершился неудачно: CWWKN0008E: объект не может быть полученных для имени jdbc/OracleDS. – user115524