Hi,
Now same thing we need to do in Drool 6.2. which is totally different from Guvnor 5.5.
We need to load kjar runtime from remote repository in client java web project.
I followed below step -
1. We downloaded kie-drools-wb-distribution-wars-6.2.0.Final-wildfly8.war(deployed as jboss as kie-drools-6.2.0 on wildfly). I created project 'test1' & successfully build & deployed.
2. In "Artifact Repository" I can see my project jar "test1-LATEST.jar" & even I can download it like -
Pom.xml in test1-LATEST.jar given below-
<modelVersion>4.0.0</modelVersion>
<groupId>com.eno</groupId>
<artifactId>test1</artifactId>
<version>LATEST</version>
<name>Test1</name>
<dependencies>
<dependency>
<groupId>com.eno</groupId>
<artifactId>pojo</artifactId>
<version>09.09.15</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.kie</groupId>
<artifactId>kie-maven-plugin</artifactId>
<version>6.2.0.Final</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
3. Now I created simple "Client java web project(non maven project)" to use kjar. We set setting.xml & using below code but it failed.
Code:
..............
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
System.out.println(kr.getDefaultReleaseId());
UrlResource urlResource = (UrlResource) ks.getResources().newUrlResource(url);
urlResource.setUsername("admin");
urlResource.setPassword("Passw0rd");
urlResource.setBasicAuthentication("enabled");
InputStream is = urlResource.getInputStream();
KieModule kModule = kr.addKieModule(ks.getResources().newInputStreamResource(is));
System.out.println(kModule.getReleaseId());
KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());
KieScanner kieScanner = ks.newKieScanner(kContainer);
kieScanner.start(60000L);
KieBase kieBase = kContainer.getKieBase();
KieSession kieSession= kieBase.newKieSession();
Merchant merchant = new Merchant(1,true);
kieSession.insert(merchant);
kieSession.fireAllRules();
kieSession.dispose();
System.out.println(merchant.getStatus());
..............
I used below jars in "java web project" :
aether-api-1.0.0.v20140518.jar,aether-connector-basic-1.0.0.v20140518.jar
aether-impl-1.0.0.v20140518.jar,aether-spi-1.0.0.v20140518.jar, aether-transport-file-1.0.0.v20140518.jar,
aether-transport-http-1.0.0.v20140518.jar, aether-transport-wagon-1.0.0.v20140518.jar,
aether-util-1.0.0.v20140518.jar, antlr-runtime-3.5.jar,commons-codec-1.4.jar,
drools-compiler-6.2.0.Final.jar,drools-core-6.2.0.Final.jar, kie-api-6.2.0.Final.jar,
kie-ci-6.2.0.Final.jar, kie-internal-6.2.0.Final.jar, maven-aether-provider-3.2.2.jar,
maven-settings-3.2.2.jar, maven-settings-builder-3.2.2.jar, mvel2-2.2.4.Final.jar,
plexus-interpolation-1.19.jar, plexus-utils-3.0.17.jar, slf4j-api-1.7.12.jar,
slf4j-simple-1.7.12.jar, wagon-http-2.0.jar, wagon-http-shared4-2.0.jar,wagon-provider-api-1.0.jar,
xstream-1.4.7.jar
settings.xml - Added system property kie.maven.settings.custom=/home/krunal/devtool/drool6/settings.xml
<server>
<id>kie-drools-6.2.0</id>
<username>admin</username>
<password>Passw0rd</password>
<configuration>
<wagonProvider>httpclient</wagonProvider>
<httpConfiguration>
<all>
<usePreemptive>true</usePreemptive>
</all>
</httpConfiguration>
</configuration>
</server>
<profiles>
<profile>
<id>profile-1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>kie-drools-6.2.0</id>
<name>Drools workbench</name>
</repository>
</repositories>
</profile>
</profiles>
</settings>
## We got following error when our "Client java web project"(non maven project) on wildfly:
16:40:22,330 INFO [org.drools.compiler.kie.builder.impl.KieRepositoryImpl] (default task-67) KieModule was added: MemoryKieModule[releaseId=com.eno:test1:LATEST]
16:40:22,331 INFO [stdout] (default task-67) com.eno:test1:LATEST
16:40:22,386 ERROR [stderr] (default task-67) java.lang.NullPointerException
16:40:22,386 ERROR [stderr] (default task-67) at org.kie.scanner.Aether.newRepositorySystemSession(Aether.java:100)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.Aether.<init>(Aether.java:66)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.Aether.<init>(Aether.java:47)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.Aether.getAether(Aether.java:57)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.MavenRepository.getMavenRepository(MavenRepository.java:73)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.ArtifactResolver.<init>(ArtifactResolver.java:36)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.KieRepositoryScannerImpl.getArtifactResolver(KieRepositoryScannerImpl.java:85)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:95)
16:40:22,387 ERROR [stderr] (default task-67) at org.kie.scanner.KieRepositoryScannerImpl.loadArtifact(KieRepositoryScannerImpl.java:91)
16:40:22,387 ERROR [stderr] (default task-67) at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.loadKieModuleFromMavenRepo(KieRepositoryImpl.java:113)
16:40:22,387 ERROR [stderr] (default task-67) at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:99)
16:40:22,387 ERROR [stderr] (default task-67) at org.drools.compiler.kie.builder.impl.KieRepositoryImpl.getKieModule(KieRepositoryImpl.java:76)
16:40:22,387 ERROR [stderr] (default task-67) at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:95)
16:40:22,387 ERROR [stderr] (default task-67) at com.eno.testweb.TestDrool6.doPost(TestDrool6.java:62)
16:40:22,387 ERROR [stderr] (default task-67) at com.eno.testweb.TestDrool6.doGet(TestDrool6.java:38)
## We got following error when our "Client java web project"(non maven project) on glassfish 4:
[#|2015-09-25T17:11:18.214+0530|SEVERE|glassfish 4.1||_ThreadID=33;_ThreadName=Thread-9;_TimeMillis=1443181278214;_LevelValue=1000;|
java.lang.NoSuchFieldError: UTF8_CHARSET
at org.drools.core.io.impl.UrlResource.grabLastMod(UrlResource.java:336)
at org.drools.core.io.impl.UrlResource.getInputStream(UrlResource.java:160)