helloworld auf Kie Server Version 6.4.0
Ich evaluiere derzeit KIE Server, ohne KIE Workbench zu verwenden. Das Szenario, das ich auswerte, ist:
1) Ein Dritter wird mir eine drl-Datei mit seinem Wertobjekt (VO, das in drl verwendet wird) geben. Ich muss ein kjar oder jar programmatisch über eine Standard-Maven-Projektstruktur erstellen und außerdem einen Container für dieses Artefakt erstellen und in Maven Repo speichern.
2) Wenn ich eine Anfrage zur Ausführung zusammen mit den Eingabedaten für dieses Artefakt erhalte, durchREST
call, ich muss den oben erstellten Container mit diesen Eingabedaten ausführen.
Ich folgte den BeispielenDie undDie
um ein einfaches "HelloWorld" -Projekt zu machen.
POM.XML
<modelVersion>4.0.0</modelVersion>
<groupId>demo</groupId>
<artifactId>Hello</artifactId>
<version>1</version>
<packaging>kjar</packaging>
<dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.4.0.Final</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-archiver</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-archiver</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.4.0.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
HelloWorld.java
package demo;
public class HelloWorld implements java.io.Serializable {
static final long serialVersionUID = 1L;
private java.lang.String message;
public HelloWorld()
{
}
public java.lang.String getMessage()
{
return this.message;
}
public void setMessage(java.lang.String message)
{
this.message = message;
}
public HelloWorld(java.lang.String message)
{
this.message = message;
}
}
HelloWorld.drl
package demo;
import demo.HelloWorld;
rule "hello"
when
HelloWorld(message == "Joe");
then
System.out.println("Hello Joe!");
end
kmodule.xml
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="demo" packages="demo">
<ksession name="demo.session"/>
</kbase>
</kmodule>
Benutzte einfache Maven-Projektstruktur:
Hello
|
|
|--src
| |--- main
| |--java
| | |---demo
| | |
| | |-- HelloWorld.java
| |
| |--resources
| |
| |--demo
| | |
| | |-- HelloWorld.drl
| |
| |--META-INF
| |
| |--kmodule.xml
|
|-- pom.xml
Ich bin in der Lage, einen Container 'HelloworldContainer' für die oben genannte Maven-Proj-Struktur mit dem @ zu erstelleGroupId: demo, Artifact: Hello, version: 1
Aber wenn ich versuche, es wie folgt auszuführen, bekommen interne Server-Fehler-URI:http: // localhost: 8080 / kie-server / services / rest / server / container / instance / HelloworldContainer
Headers:
Content-Type: application/xml,
Authorization: Basic UWRtaWLkuTW5hZG1pbg==,
X-KIE-ContentType: XSTREAM
Körper
<batch-execution>
<insert out-identifier="helloworld" return-object="true">
<demo.HelloWorld>
<message>Joe</message>
</demo.HelloWorld>
</insert>
<fire-all-rules/>
</batch-execution>
Error Stack trace:
java.lang.IncompatibleClassChangeError: com.google.common.collect.Maps and com.google.common.collect.Maps$TransformedValuesMap disagree on InnerClasses attribute
java.lang.Class.getDeclaringClass0(Native Method)
java.lang.Class.getDeclaringClass(Class.java:1101)
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.<init>(ParameterizedTypeImpl.java:52)
sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl.make(ParameterizedTypeImpl.java:95)
sun.reflect.generics.factory.CoreReflectionFactory.makeParameterizedType(CoreReflectionFactory.java:105)
sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:140)
sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
sun.reflect.generics.repository.FieldRepository.getGenericType(FieldRepository.java:85)
java.lang.reflect.Field.getGenericType(Field.java:237)
com.thoughtworks.xstream.mapper.AnnotationMapper.processTypes(AnnotationMapper.java:212)
com.thoughtworks.xstream.mapper.AnnotationMapper.processAnnotations(AnnotationMapper.java:164)
com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:1971)
com.thoughtworks.xstream.XStream.processAnnotations(XStream.java:1982)
org.kie.server.api.marshalling.xstream.XStreamMarshaller.<init>(XStreamMarshaller.java:86)
org.kie.server.api.marshalling.MarshallerFactory.getMarshaller(MarshallerFactory.java:37)
org.kie.server.services.impl.KieContainerInstanceImpl.getMarshaller(KieContainerInstanceImpl.java:111)
org.kie.server.services.drools.DroolsKieContainerCommandServiceImpl.callContainer(DroolsKieContainerCommandServiceImpl.java:59)
org.kie.server.remote.rest.drools.CommandResource.manageContainer(CommandResource.java:72)
Ich kann Kie Server 6.4.0 über den Link @ erfolgreich bereitstellehttp: //mswiderski.blogspot.in/2015/10/installing-kie-server-and-workbench-on.htm
Server startet einwandfrei, mit Ausnahme dieses "SEVERE" -Problems.
org.kie.server.services.impl.KieServerImpl.<init> Error when initializing server extension of type jBPM KIE Server extension
java.lang.RuntimeException: Unable to create EntityManagerFactory due to [PersistenceUnit: org.jbpm.domain] Unable to build EntityManagerFactory
at org.kie.server.services.jbpm.JbpmKieServerExtension.build(JbpmKieServerExtension.java:524)
at org.kie.server.services.jbpm.JbpmKieServerExtension.init(JbpmKieServerExtension.java:155)
at org.kie.server.services.impl.KieServerImpl.<init>(KieServerImpl.java:108)
at org.kie.server.services.impl.KieServerLocator.<clinit>(KieServerLocator.java:20)
at org.kie.server.services.Bootstrap.contextInitialized(Bootstrap.java:50)
at
...
Caused by: javax.naming.NameNotFoundException: Name [jboss/datasources/ExampleDS] is not bound in this Context. Unable to find [jboss].
at org.apache.naming.NamingContext.lookup(NamingContext.java:816)
at org.apache.naming.NamingContext.lookup(NamingContext.java:159)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:140)
at javax.naming.InitialContext.lookup(InitialContext.java:415)
at org.hibernate.service.jndi.internal.JndiServiceImpl.locate(JndiServiceImpl.java:65)
... 33 more
und andere Reihe von WARNUNGEN, obwohlorg.sonatype.guice
ist in meinem m2 repo @ verfügb
26-Sep-2016 11:37:21.346 WARNING [localhost-startStop-1] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type org.sonatype.guice.asm.MethodVisitor due to org.sonatype.guice.asm.MethodVisitor
26-Sep-2016 11:37:21.352 WARNING [localhost-startStop-1] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type org.sonatype.guice.asm.FieldVisitor due to org.sonatype.guice.asm.FieldVisitor
26-Sep-2016 11:37:21.357 WARNING [localhost-startStop-1] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type org.sonatype.guice.asm.Type due to org.sonatype.guice.asm.Type
26-Sep-2016 11:37:21.363 WARNING [localhost-startStop-1] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type org.sonatype.guice.asm.ClassWriter due to org.sonatype.guice.asm.ClassWriter
26-Sep-2016 11:37:21.368 WARNING [localhost-startStop-1] org.kie.server.services.drools.DroolsKieServerExtension.createContainer Unable to create instance of type org.sonatype.guice.asm.Edge due to org.sonatype.guice.asm.Edge