2012-10-22 4 views
0

등록 된 URL에서 규칙을 읽는 방법입니다. 사용자가 입력 한 내용을 확인하기위한 Guvnor 사용자의 GUI를 구성하는 웹 응용 프로그램 (Tomcat v7.0 서버) 2. Guvnor에서 규칙을 읽는 웹 서비스 (JBoss EAP 6.0) drools API를 사용하여 웹 서비스로 노출합니다. 3. 규칙의 저장소 역할을하는 Guvnor (Jboss AS 7). 내가 양식 (웹 응용 프로그램)을 제출하려고하면서버에서 HTTP 응답 코드 : 401 (URL : http : // localhost : 8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST)을 반환했습니다.

, 내 콘솔에 다음과 같은 오류가 발생합니다 : - :

Resource resource = ResourceFactory 
      .newClassPathResource("com/test/rules/Color.xml"); 
    KnowledgeAgent kagent = KnowledgeAgentFactory 
      .newKnowledgeAgent("kagent"); 
    kagent.monitorResourceChangeEvents(true); 
    kagent.applyChangeSet(resource); 
    KnowledgeBase kbase = kagent.getKnowledgeBase(); 
    kbase.getKnowledgePackages(); 
    StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); 
    ksession.insert(colorBean); 
    ksession.fireAllRules(); 
    System.out.println(colorBean.getColor()); 
    ksession.dispose(); 
    return colorBean; 
-

여기
INFO [stdout] (Thread-77) [2012:10:296 10:10:504:info] KnowledegAgent has started listening for ChangeSet notifications 
10:52:17,800 INFO [stdout] (http-localhost/127.0.0.1:8180-1) (null: 5, 174): cvc-elt.1: Cannot find the declaration of element 'change-set'. 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:info] KnowledgAgent applying ChangeSet 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] KnowledgeAgent subscribing to resource=[UrlResource path='http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST'] 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] ResourceChangeNotification subscribing [email protected] to resource=[UrlResource path='http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST'] 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] ResourceChangeScanner subcribing [email protected] to resource=[UrlResource path='http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST'] 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] KnowledgeAgent ChangeSet requires KnowledgeBuilder 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet 
10:52:17,831 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:831:debug] KnowledgeAgent building resource=[UrlResource path='http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST'] 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) [2012:10:296 10:10:955:exception] 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) java.lang.RuntimeException: KnowledgeAgent exception while trying to deserialize KnowledgeDefinitionsPackage 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:418) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:120) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:109) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at com.test.drools.ExposeDroolsWebService.checkedColor(ExposeDroolsWebService.java:50) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at java.lang.reflect.Method.invoke(Method.java:597) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
10:52:17,955 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at java.lang.Thread.run(Thread.java:662) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) Caused by: java.io.IOException: Server returned HTTP response code: 401 for URL: http://localhost:8080/jboss-brms/org.drools.guvnor.Guvnor/package/DroolsPackage/LATEST 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.drools.io.impl.UrlResource.getInputStream(UrlResource.java:76) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:407) 
10:52:17,971 INFO [stdout] (http-localhost/127.0.0.1:8180-1) ... 29 more 

내가 규칙을 액세스하기 위해 사용하는 코드입니다

누군가이 오류를 해결하는 데 도움을 줄 수 있습니까?

답변

1

HTTP 오류 401은 해당 URL에 대한 액세스 권한이 없음을 의미합니다. guvnor에 사용자 이름/암호를 제공해야합니다.

다음 코드는 DRL을 guvnor에서 String 변수로 읽습니다.

private static final String AUTH = "guvnor:guvnor"; 
private static String readRulesFromGuvnor(URL url, String authString) { 
    String returnStr = ""; 
    try { 
     URLConnection urlConnection = url.openConnection(); 
     if (authString != null) { 
      byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
      String authStringEnc = new String(authEncBytes); 
      urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc); 
     } 
     returnStr = IOUtils.toString(urlConnection.getInputStream(), "UTF-8"); 
     LOGGER.info("Rules read from: {}", url.toString()); 
    } catch (IOException e) { 
     LOGGER.error(e.getMessage()); 
    } 
     return returnStr; 
    } 
0

이 우두머리로 사용하는 경우 다음은 패키지 스냅 샷의 기본 인증, 당신의 변화 설정 XML에 URL을 패키지에 빈 기본적으로 사용자 이름과 암호를 추가 예상

<resource source="http://127.0.0.1:8888/org.drools.guvnor.Guvnor/package/mortgages/LATEST" type="PKG" basicAuthentication="enabled" username="admin" password="admin" />

관련 문제