Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > drools как axis web service


Автор: Hopeless 1.10.2009, 09:39
Как создать axis2 web service котрьій служит для принятия решений с помощью библиотеки drools?

В galileo eclipse я создал такой web service (смотри прикрепленньій архив), потом пробьівал по разному розвернуть его на сервер Intalio. Я предварительно скопировал *.jar библиотеки drools в C:\intalio-bpms-6.0.1.004\webapps\axis2\WEB-INF\lib

Вариантьі развертьівавния:

1. В виде zip архива c aar расширением через административную консоль axis2. Развертьівается, но при попьітке воспользоватся им с  помощью Web Services Explorer вьіпадает FileNotFoundException, что файл правил (в моем случае файл Sample.drl) не может бьіть найден.

2. В розархивированом виде простьім копированием в папку C:\intalio-bpms-6.0.1.004\webapps\axis2\WEB-INF\services. Тепер при попьітке воспользоватся им с  помощью Web Services Explorer вьіпадает:

Код

Unable to resolve ObjectType 'Message' : [Rule name='Hello World']

Unable to resolve ObjectType 'Message' : [Rule name='GoodBye']

Error importing : 'main.Main.Message'
Rule Compilation error : [Rule name='Hello World']
        com/sample/Rule_Hello_World_0.java (2:48) : Only a type can be imported. main.Main.Message resolves to a package
        com/sample/Rule_Hello_World_0.java (7:335) : myMessage cannot be resolved
        com/sample/Rule_Hello_World_0.java (8:351) : m cannot be resolved
        com/sample/Rule_Hello_World_0.java (9:392) : m cannot be resolved
        com/sample/Rule_Hello_World_0.java (9:405) : Message.GOODBYE cannot be resolved to a type
        com/sample/Rule_Hello_World_0.java (10:441) : m cannot be resolved

Rule Compilation error : [Rule name='GoodBye']
        com/sample/Rule_GoodBye_0.java (2:48) : Only a type can be imported. main.Main.Message resolves to a package
        com/sample/Rule_GoodBye_0.java (7:331) : myMessage cannot be resolved

Error importing : 'main.Main.Message'
java.lang.IllegalArgumentException: Could not parse knowledge.
        at main.Main.readKnowledgeBase(Main.java:52)
        at main.Main.getDecision(Main.java:27)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
        at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
        at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
        at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
        at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:167)
        at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:142)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
        at java.lang.Thread.run(Thread.java:619)


В прикрепленном архиве архив проекта и архив сервиса

Автор: Hopeless 1.10.2009, 15:22
То есть как я понимаю нужно где то прописать что файл правил находится в classpath.. В services.xml?

Автор: Hopeless 2.10.2009, 09:20
Погуглил и нашел решение: http://wso2.org/blog/dims/1131

Тоесть прописал в service.xml строчку: 

Код

<parameter name="ServiceTCCL">composite</parameter>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)