Java tutorial
/* * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.server; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.namespace.QName; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPMessage; import org.apache.camel.CamelContext; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactoryService; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderError; import org.drools.builder.KnowledgeBuilderErrors; import org.drools.builder.KnowledgeBuilderFactoryService; import org.drools.builder.ResourceType; //import org.drools.grid.ConnectionFactoryService; //import org.drools.grid.GridConnection; //import org.drools.grid.GridNode; //import org.drools.grid.GridServiceDescription; //import org.drools.grid.SocketService; //import org.drools.grid.service.directory.WhitePages; import org.drools.io.impl.ByteArrayResource; import org.drools.runtime.StatefulKnowledgeSession; import org.junit.Ignore; import org.springframework.context.support.ClassPathXmlApplicationContext; import static org.junit.Assert.*; public class CxfSoapClientServerGridTest { @org.junit.Test @Ignore public void test1() throws Exception { // ClassPathXmlApplicationContext springContext = new ClassPathXmlApplicationContext( "classpath:beans-test-grid.xml" ); // // SOAPMessage soapMessage = createMessageForKsession("ksession3"); // // Test test = new Test(); // String response = test.execute( soapMessage, // (CamelContext) springContext.getBean( "camel-client-ctx" ) ); // // //System.out.println("Response 1 = "+ response ); // assertTrue( response.contains( "execution-results" ) ); // assertTrue( response.contains( "echo" ) ); // // // GridImpl grid2 = (GridImpl) springContext.getBean("grid2"); // GridServiceDescription<GridNode> n1Gsd = grid2.get( WhitePages.class ).lookup( "node1" ); // GridConnection<GridNode> conn = grid2.get( ConnectionFactoryService.class ).createConnection( n1Gsd ); // GridNode remoteN1 = conn.connect(); // // KnowledgeBuilder kbuilder = remoteN1.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(); // // assertNotNull( kbuilder ); // // String rule = "package org.grid.test\n" // + "declare Message2\n" // + "text : String\n" // + "end\n" // + "rule \"echo2\" \n" // + "dialect \"mvel\"\n" // + "when\n" // + " $m : Message2()\n" // + "then\n" // + "$m.text = \"echo2:\" + $m.text;\n" // + "end\n"; // //System.out.println("Rule = "+rule); // kbuilder.add( new ByteArrayResource( rule.getBytes() ), // ResourceType.DRL ); // // KnowledgeBuilderErrors errors = kbuilder.getErrors(); // if ( errors != null && errors.size() > 0 ) { // for ( KnowledgeBuilderError error : errors ) { // System.out.println( "Error: " + error.getMessage() ); // // } // fail("KnowledgeBase did not build"); // } // // KnowledgeBase kbase = remoteN1.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(); // // assertNotNull( kbase ); // // kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); // // StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession(); // // assertNotNull( session ); // // // remoteN1.set("ksession2", session); // // // soapMessage = createMessageForKsession("ksession2"); // // String response2 = test.execute( soapMessage, // (CamelContext) springContext.getBean( "camel-client-ctx" ) ); // // //System.out.println("Response 2 = "+response2 ); // assertTrue( response2.contains( "execution-results" ) ); // assertTrue( response2.contains( "echo2" ) ); // // remoteN1.dispose(); // GridImpl grid1 = (GridImpl) springContext.getBean("grid1"); // grid1.get(SocketService.class).close(); // // springContext.registerShutdownHook(); // springContext.stop(); } private SOAPMessage createMessageForKsession(String ksessionName) throws SOAPException { SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(); SOAPBody body = soapMessage.getSOAPPart().getEnvelope().getBody(); QName payloadName = new QName("http://soap.jax.drools.org", "execute", "ns1"); body.addBodyElement(payloadName); String add = ""; String packages = "org.test"; if (ksessionName.equals("ksession2")) { add = "2"; packages = "org.grid.test"; } String cmd = ""; cmd += "<batch-execution lookup=\"" + ksessionName + "\">\n"; cmd += " <insert out-identifier=\"message\">\n"; cmd += " <" + packages + ".Message" + add + ">\n"; cmd += " <text>Helllo World" + ksessionName + "</text>\n"; cmd += " </" + packages + ".Message" + add + ">\n"; cmd += " </insert>\n"; cmd += " <fire-all-rules/>\n"; cmd += "</batch-execution>\n"; body.addTextNode(cmd); OutputStream os = new ByteArrayOutputStream(); try { soapMessage.writeTo(os); } catch (IOException ex) { Logger.getLogger(CxfSoapClientServerGridTest.class.getName()).log(Level.SEVERE, null, ex); } //System.out.println("SOAP = "+os.toString()); return soapMessage; } }