-
1. Re: Problem with Rest Interface in JBPM 5.2
meyerschalk May 28, 2012 2:04 AM (in response to chandrasachin16)you are trying to access a POST service with a GET call. You have to write some code. The are some other topics on how to to this but it is not a trivial issue.
Have a look at some of these
http://community.jboss.org/message/605467 ., http://community.jboss.org/message/601387
The REST Interface work fine - I have just completed my own User test application to test the REST service ( GWT ).
There are some cross platform security issues to consider when implementing the rest services, but I have verified most of the rest service in 5.2 -
I am still learning to understand the responses from some of the calls, as the responses will depend on the workflow you instances use to test.
I am still unsure of some of the rest calls, but I will investigate the console-server code when I think I need to use these.
The JBPM console is just a basic platform console, if you are planning any commercial work then you still have a lot more to do to make the workflow solutions adaptable for business users. You also have to consider how you will deal with fine grain permission and user rights as this impact the designs and executions of your workflow's directly. It is also the area where I have not yet seen any vendor with appropriate solution.
In my case I have my own identity platform integrated into the JBoss portal architecture. I am currently simplifying this components for use with the jboss application server and the human task manager service for small client base deployments.
For commercial solutions you will still need to use the direct api's , but the rest approach do simplify some of the coding and management activities.
Regards
-
2. Re: Problem with Rest Interface in JBPM 5.2
chandrasachin16 May 30, 2012 1:47 AM (in response to meyerschalk)Hi Dirk,
Thanks for replying.I will try with this solution.
-
3. Re: Problem with Rest Interface in JBPM 5.2
chandrasachin16 Jun 3, 2012 2:21 PM (in response to chandrasachin16)Hi Dirk ,
I tried with the solution given in the link as suggested by you. I tried with Http Client 4.2. I created a web service in which I wrote two methods (authenticate and requestPostService).The code is written as follows
public class RestInt {
public static String KEY_USERNAME="j_username";
public static String KEY_PASSWORD="j_password";
private static HttpClient httpclient = new DefaultHttpClient();
private static final String PROCESS_INSTANCE="http://localhost:8080/gwt-console-server/rs/process/definition/{com.sample.evaluation}/new_instance";
public String MyService(String name) throws ClientProtocolException, IOException{
String response=authenticate("krisv","krisv");
System.out.println("Authentication------------------------"+response);
response=requestPostService(PROCESS_INSTANCE,null,false);
System.out.println("Process Instance------------------------"+response);
return response;
}
public static String authenticate(String username,String password){
String responseString="";
List<NameValuePair> formsParam=new ArrayList<NameValuePair>();
formsParam.add(new BasicNameValuePair(KEY_USERNAME, username));
formsParam.add(new BasicNameValuePair(KEY_PASSWORD, password));
HttpPost httpPost=new HttpPost("http://localhost:8080/gwt-console-server/rs/process/j_security_check");
InputStreamReader inputStreamReader=null;
BufferedReader bufferedReader=null;
try{
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(formsParam, "UTF-8");
httpPost.setEntity(entity);
HttpResponse response=httpclient.execute(httpPost);
InputStream inputStream=response.getEntity().getContent();
inputStreamReader=new InputStreamReader(inputStream);
bufferedReader=new BufferedReader(inputStreamReader);
StringBuilder builder =new StringBuilder();
String line=bufferedReader.readLine();
while(line!=null){
builder.append(line);
System.out.println("line--------------------------------"+line);
line=bufferedReader.readLine();
}
responseString=builder.toString();
}catch(Exception ex){
throw new RuntimeException(ex);
}finally{
if(inputStreamReader!=null){
try{
inputStreamReader.close();
}catch(Exception ex){
throw new RuntimeException(ex);
}
}if(bufferedReader!=null){
try{
bufferedReader.close();
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
}
return responseString;
}
public static String requestPostService(String url,Map<String,Object> parameters,boolean multipart) throws ClientProtocolException, IOException{
String responseString="";
MultipartEntity multiPartEntity=new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
List<NameValuePair> formsParam=new ArrayList<NameValuePair>();
if(parameters==null){
parameters=new HashMap<String, Object>();
}
Set<String> keys =parameters.keySet();
for(Iterator<String> keysIterator=keys.iterator();keysIterator.hasNext();){
String keyString=keysIterator.next();
String value=parameters.get(keyString).toString();
formsParam.add(new BasicNameValuePair(keyString, value));
if(multipart){
try{
StringBody body=new StringBody(value,"text/plain",Charset.forName("UTF-8"));
multiPartEntity.addPart(keyString, (ContentBody)body);
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
}
HttpPost httpPost=new HttpPost(url);
InputStreamReader inputStreamReader=null;
BufferedReader bufferedReader=null;
try{
if(multipart){
httpPost.setEntity(multiPartEntity);
}else{
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(formsParam, "UTF-8");
httpPost.setEntity(entity);
}
HttpResponse response=httpclient.execute(httpPost);
InputStream inputStream=response.getEntity().getContent();
inputStreamReader=new InputStreamReader(inputStream);
bufferedReader=new BufferedReader(inputStreamReader);
StringBuilder builder =new StringBuilder();
String line=bufferedReader.readLine();
while(line!=null){
builder.append(line);
System.out.println("line--------------------------------"+line);
line=bufferedReader.readLine();
}
responseString=builder.toString();
}catch(Exception ex){
throw new RuntimeException(ex);
}finally{
if(inputStreamReader!=null){
try{
inputStreamReader.close();
}catch(Exception ex){
throw new RuntimeException(ex);
}
}if(bufferedReader!=null){
try{
bufferedReader.close();
}catch(Exception ex){
throw new RuntimeException(ex);
}
}
}
return responseString;
}
}
However when I tried to run this I got an error "The client did not produce a request within the time that the server was prepared to wait".It looks like this is a problem with timeout.Also another error occurs while accessing invoking the web service.In the code I am trying to invoke the web service using a JSP ,but I get exception: java.lang.IllegalArgumentException which occurs at line
response=requestPostService(PROCESS_INSTANCE,null,false); // since we are passing null for the second argument.My queries why we are passing a null value or has it got some purpose to serve ?
The errror log in Jboss's server log is as given below.
22:43:30,172 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-1) Initializing Mojarra 2.1.3 (SNAPSHOT 20110825) for context '/drools-guvnor'
22:43:33,610 INFO [org.hibernate.validator.util.Version] (MSC service thread 1-1) Hibernate Validator 4.2.0.Final
22:43:33,794 INFO [org.jboss.web] (MSC service thread 1-1) registering web context: /drools-guvnor
22:43:33,796 INFO [org.jboss.as] (MSC service thread 1-2) JBoss AS 7.0.2.Final "Arc" started in 208029ms - Started 430 of 497 services (67 services are passive or on-demand)
22:43:33,860 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "JBPMRestClient.war"
22:43:33,861 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "JBPMRest.war"
22:43:33,861 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "jbpm-gwt-console.war"
22:43:33,861 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "jbpm-gwt-console-server.war"
22:43:33,861 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "drools-guvnor.war"
22:43:33,861 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployed "designer.war"
23:22:48,542 INFO [stdout] (http-localhost-127.0.0.1-8080-4) line--------------------------------<html><head><title>JBoss Web/7.0.1.Final - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 408 - The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser</u></p><p><b>description</b> <u>The client did not produce a request within the time that the server was prepared to wait (The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser).</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/7.0.1.Final</h3></body></html>
23:22:48,543 INFO [stdout] (http-localhost-127.0.0.1-8080-4) Authentication------------------------<html><head><title>JBoss Web/7.0.1.Final - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 408 - The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser</u></p><p><b>description</b> <u>The client did not produce a request within the time that the server was prepared to wait (The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser).</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/7.0.1.Final</h3></body></html>
Can you please throw some light on this .
Regards
Sachin
-
4. Re: Problem with Rest Interface in JBPM 5.2
meyerschalk Jun 4, 2012 8:54 AM (in response to chandrasachin16)I am sorry to see that you have problems, I never had the same problem you described here, so I am not sure how to help,
I did have some issues with teh stricter crosssite rules for HTTPClient 4.2
I overcome that by doing sone specific setting to prepare my HttpClient .
my workflow manager, a work in progress - GWT Interface
I created my redirect strategy. a bit of research won't do you any harm so you have to play arround with the HrrpClient setup and how to string the calls fo post and get together.
DefaultRedirectStrategy { .....}public
class BrowserRedirectStrategy extendsin your class define
private DefaultHttpClient httpClient = new DefaultHttpClient(); //you have done this
The process I follow is
if Get make GetCall
if j_security in content call authenticate
if 405 Method Not Allowed
. call Get again normally with a positive result
if Post make post call
if j_security in content call authenticate
if 405 Method Not Allowed
call Get again to page without aparameters for post normally with a good result
Here is how I setup the HttpClient -
httpClient.getParams().setParameter(AllClientPNames.HANDLE_REDIRECTS, true );
HttpHost targetHost = new HttpHost("localhost", 8080, "http"
); //todo replace with lookupString content = ""
;
httpClient.getCredentialsProvider().setCredentials(newAuthScope(targetHost.getHostName(), targetHost.getPort()),new
UsernamePasswordCredentials(userId, password));// Generate BASIC scheme object and add it to the local
// auth cache
BasicScheme basicAuth = new BasicScheme();
AuthCache authCache = new BasicAuthCache();
authCache.put(targetHost, basicAuth);
// Add AuthCache to the execution context
BasicHttpContext localcontext =
new BasicHttpContext(););
here is a example trace of the resulted call -
See that I call my redirect strategy
21:51:59,300 INFO [server] isRedirected -----start-------
21:51:59,311 INFO [server] isRedirected status line ->HTTP/1.1 200 OK
21:51:59,312 INFO [server] isRedirected Header ->no loaction
21:51:59,312 INFO [server] isRedirected Headers
21:51:59,312 INFO [server] Server = [Apache-Coyote/1.1]
21:51:59,312 INFO [server] isRedirected Header Elements
21:51:59,312 INFO [server] Apache-Coyote/1.1 = []
21:51:59,312 INFO [server] Pragma = [No-cache]
21:51:59,312 INFO [server] isRedirected Header Elements
21:51:59,312 INFO [server] No-cache = []
21:51:59,312 INFO [server] Cache-Control = [no-cache]
21:51:59,312 INFO [server] isRedirected Header Elements
21:51:59,312 INFO [server] no-cache = []
21:51:59,312 INFO [server] Expires = [Thu, 01 Jan 1970 10:00:00 EST]
21:51:59,312 INFO [server] isRedirected Header Elements
21:51:59,312 INFO [server] Thu = []
21:51:59,312 INFO [server] 01 Jan 1970 10:00:00 EST = []
21:51:59,312 INFO [server] Set-Cookie = [JSESSIONID=2607867399457D13348FAE3E857B72FA; Path=/gwt-console-server]
21:51:59,312 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] JSESSIONID = [2607867399457D13348FAE3E857B72FA]
21:51:59,313 INFO [server] Accept-Ranges = [bytes]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] bytes = []
21:51:59,313 INFO [server] ETag = [W/"621-1323388266000"]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] W/"621-1323388266000" = []
21:51:59,313 INFO [server] Last-Modified = [Thu, 08 Dec 2011 23:51:06 GMT]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] Thu = []
21:51:59,313 INFO [server] 08 Dec 2011 23:51:06 GMT = []
21:51:59,313 INFO [server] Content-Type = [text/html]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] text/html = []
21:51:59,313 INFO [server] Content-Length = [621]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] 621 = []
21:51:59,313 INFO [server] Date = [Mon, 04 Jun 2012 11:51:58 GMT]
21:51:59,313 INFO [server] isRedirected Header Elements
21:51:59,313 INFO [server] Mon = []
21:51:59,313 INFO [server] 04 Jun 2012 11:51:58 GMT = []
21:51:59,313 INFO [server] isRedirected ------------
21:51:59,313 INFO [server] isRedirected return 4=false
21:51:59,316 INFO [server] Raw Response 1HTTP/1.1 200 OK [Server: Apache-Coyote/1.1, Pragma: No-cache, Cache-Control: no-cache, Expires: Thu, 01 Jan 1970 10:00:00 EST, Set-Cookie: JSESSIONID=2607867399457D13348FAE3E857B72FA; Path=/gwt-console-server, Accept-Ranges: bytes, ETag: W/"621-1323388266000", Last-Modified: Thu, 08 Dec 2011 23:51:06 GMT, Content-Type: text/html, Content-Length: 621, Date: Mon, 04 Jun 2012 11:51:58 GMT]
21:51:59,316 INFO [server] start process1:------><html><head> <title>HTTP 401</title> <!-- Do not remove --></head><body><form method="POST" action="j_security_check"> <center/> <br><br> <div style="font-family:sans-serif;border:1px solid black; width:270;padding:15px;"> <h2>BPM Console Server</h2> <table with=250> <tr> <td>Username:</td> <td><input type="text" name="j_username"></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="j_password"></td> </tr> <tr> <td></td> <td align=right><input type="submit"/></td> </tr> </table> </div></form></body></html>
21:51:59,316 INFO [server] start sec url:------>http://localhost:8080/gwt-console-server/rs/process/j_security_check
21:51:59,319 INFO [server] Next call execute sec
21:51:59,345 INFO [server] isRedirected -----start-------
21:51:59,345 INFO [server] isRedirected status line ->HTTP/1.1 302 Moved Temporarily
21:51:59,345 INFO [server] isRedirected Header ->Location: http://localhost:8080/gwt-console-server/rs/process/definitions
21:51:59,345 INFO [server] isRedirected Headers
21:51:59,345 INFO [server] Server = [Apache-Coyote/1.1]
21:51:59,345 INFO [server] isRedirected Header Elements
21:51:59,345 INFO [server] Apache-Coyote/1.1 = []
21:51:59,345 INFO [server] Location = [http://localhost:8080/gwt-console-server/rs/process/definitions]
21:51:59,345 INFO [server] isRedirected Header Elements
21:51:59,345 INFO [server] http://localhost:8080/gwt-console-server/rs/process/definitions = []
21:51:59,345 INFO [server] Content-Length = [0]
21:51:59,345 INFO [server] isRedirected Header Elements
21:51:59,345 INFO [server] 0 = []
21:51:59,345 INFO [server] Date = [Mon, 04 Jun 2012 11:51:58 GMT]
21:51:59,345 INFO [server] isRedirected Header Elements
21:51:59,345 INFO [server] Mon = []
21:51:59,345 INFO [server] 04 Jun 2012 11:51:58 GMT = []
21:51:59,345 INFO [server] isRedirected ------------
21:51:59,345 INFO [server] isRedirectable call ->POST
21:51:59,345 INFO [server] isRedirectable call TRUE for->POST
21:51:59,346 INFO [server] isRedirected return 1=true
21:52:01,385 INFO [STDOUT] INFO 04-06 21:52:01,369 (
NilAuthenticator.java:authenticate:35) All users are guests.
NilAuthenticator.java:authenticate:3521:52:03,200 INFO [STDOUT] INFO 04-06 21:52:03,200 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) All users are guests.
RepositoryServlet.java:allowUser:11321:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) admin authenticated for rest api
PackageDeploymentServlet.java:execute:13421:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) PackageName: defaultPackage
PackageDeploymentServlet.java:execute:13521:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) PackageVersion: LATEST
PackageDeploymentServlet.java:execute:13621:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) PackageIsLatest: true
PackageDeploymentServlet.java:execute:13721:52:05,713 INFO [STDOUT] INFO 04-06 21:52:05,713 (
) PackageIsSource: false
21:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
NilAuthenticator.java:authenticate:35) All users are guests.
RepositoryServlet.java:allowUser:11321:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
) admin authenticated for rest api
PackageDeploymentServlet.java:execute:13421:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
) PackageName: s4testing
PackageDeploymentServlet.java:execute:13521:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
) PackageVersion: LATEST
PackageDeploymentServlet.java:execute:13621:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
) PackageIsLatest: true
PackageDeploymentServlet.java:execute:13721:52:05,886 INFO [STDOUT] INFO 04-06 21:52:05,886 (
) PackageIsSource: false
NilAuthenticator.java:authenticate:3521:52:05,917 ERROR [CommandDelegate] jbpm.console.directory property not found
21:52:05,964 INFO [Configuration] Reading mappings from resource : META-INF/JBPMorm.xml
21:52:05,979 INFO [QueryBinder] Binding Named query: ProcessInstancesWaitingForEvent => select processInstanceInfo.processInstanceId from ProcessInstanceInfo processInstanceInfo join processInstanceInfo.eventTypes eventTypes where eventTypes = :type
21:52:05,979 INFO [AnnotationBinder] Binding entity from annotated class: org.jbpm.persistence.processinstance.ProcessInstanceInfo
21:52:05,979 INFO [EntityBinder] Bind entity org.jbpm.persistence.processinstance.ProcessInstanceInfo on table ProcessInstanceInfo
21:52:05,979 INFO [AnnotationBinder] Binding entity from annotated class: org.drools.persistence.info.SessionInfo
21:52:05,979 INFO [EntityBinder] Bind entity org.drools.persistence.info.SessionInfo on table SessionInfo
21:52:05,979 INFO [AnnotationBinder] Binding entity from annotated class: org.drools.persistence.info.WorkItemInfo
21:52:05,979 INFO [EntityBinder] Bind entity org.drools.persistence.info.WorkItemInfo on table WorkItemInfo
21:52:05,995 INFO [HibernateSearchEventListenerRegister] Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled.
21:52:05,995 INFO [NamingHelper] JNDI InitialContext properties:{}
21:52:05,995 INFO [DatasourceConnectionProvider] Using datasource: java:jdbc/jbpmDS
21:52:05,995 INFO [SettingsFactory] RDBMS: PostgreSQL, version: 8.3.5
21:52:05,995 INFO [SettingsFactory] JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.3devel JDBC4 with SSL (build 601)
21:52:05,995 INFO [Dialect] Using dialect: org.hibernate.dialect.PostgreSQLDialect
21:52:05,995 INFO [TransactionFactoryFactory] Transaction strategy: org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
21:52:05,995 INFO [TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
21:52:05,995 INFO [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
21:52:05,995 INFO [SettingsFactory] Automatic flush during beforeCompletion(): disabled
21:52:05,995 INFO [SettingsFactory] Automatic session close at end of transaction: disabled
21:52:05,995 INFO [SettingsFactory] JDBC batch size: 15
21:52:05,995 INFO [SettingsFactory] JDBC batch updates for versioned data: disabled
21:52:05,995 INFO [SettingsFactory] Scrollable result sets: enabled
21:52:05,995 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
21:52:05,995 INFO [SettingsFactory] Connection release mode: auto
21:52:05,995 INFO [SettingsFactory] Maximum outer join fetch depth: 3
21:52:05,995 INFO [SettingsFactory] Default batch fetch size: 1
21:52:05,995 INFO [SettingsFactory] Generate SQL with comments: disabled
21:52:05,995 INFO [SettingsFactory] Order SQL updates by primary key: disabled
21:52:05,995 INFO [SettingsFactory] Order SQL inserts for batching: disabled
21:52:05,995 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21:52:05,995 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
21:52:05,995 INFO [SettingsFactory] Query language substitutions: {}
21:52:05,995 INFO [SettingsFactory] JPA-QL strict compliance: enabled
21:52:05,995 INFO [SettingsFactory] Second-level cache: enabled
21:52:05,995 INFO [SettingsFactory] Query cache: disabled
21:52:05,995 INFO [SettingsFactory] Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory
21:52:05,995 INFO [SettingsFactory] Optimize cache for minimal puts: disabled
21:52:05,995 INFO [SettingsFactory] Structured second-level cache entries: disabled
21:52:05,995 INFO [SettingsFactory] Statistics: disabled
21:52:05,995 INFO [SettingsFactory] Deleted entity synthetic identifier rollback: disabled
21:52:05,995 INFO [SettingsFactory] Default entity-mode: pojo
21:52:05,995 INFO [SettingsFactory] Named query checking : enabled
21:52:06,010 INFO [SessionFactoryImpl] building session factory
21:52:06,010 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured
21:52:06,010 INFO [SchemaUpdate] Running hbm2ddl schema update
21:52:06,010 INFO [SchemaUpdate] fetching database metadata
21:52:06,010 INFO [SchemaUpdate] updating schema
21:52:06,057 INFO [TableMetadata] table found: public.eventtypes
21:52:06,057 INFO [TableMetadata] columns: [element, instanceid]
21:52:06,057 INFO [TableMetadata] foreign keys: [fkb0e5621f7665489a]
21:52:06,057 INFO [TableMetadata] indexes: []
21:52:06,088 INFO [TableMetadata] table found: public.processinstanceinfo
21:52:06,088 INFO [TableMetadata] columns: [startdate, lastreaddate, state, processinstancebytearray, optlock, instanceid, processid, lastmodificationdate]
21:52:06,088 INFO [TableMetadata] foreign keys: []
21:52:06,088 INFO [TableMetadata] indexes: [processinstanceinfo_pkey]
21:52:06,135 INFO [TableMetadata] table found: public.sessioninfo
21:52:06,135 INFO [TableMetadata] columns: [rulesbytearray, id, startdate, optlock, lastmodificationdate]
21:52:06,135 INFO [TableMetadata] foreign keys: []
21:52:06,135 INFO [TableMetadata] indexes: [sessioninfo_pkey]
21:52:06,166 INFO [TableMetadata] table found: public.workiteminfo
21:52:06,166 INFO [TableMetadata] columns: [workitembytearray, name, workitemid, state, optlock, creationdate, processinstanceid]
21:52:06,166 INFO [TableMetadata] foreign keys: []
21:52:06,166 INFO [TableMetadata] indexes: [workiteminfo_pkey]
21:52:06,166 INFO [SchemaUpdate] schema update complete
21:52:06,166 INFO [NamingHelper] JNDI InitialContext properties:{}
21:52:06,229 INFO [CommandDelegate] Loading session data ...
21:52:07,992 INFO [PluginMgr] Successfully loaded plugin 'org.jboss.bpm.console.server.plugin.FormDispatcherPlugin': class org.jbpm.integration.console.forms.FormDispatcherComposite
21:52:08,007 INFO [STDOUT] INFO 04-06 21:52:08,007 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,039 INFO [STDOUT] INFO 04-06 21:52:08,039 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,102 INFO [STDOUT] INFO 04-06 21:52:08,102 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,117 INFO [STDOUT] INFO 04-06 21:52:08,117 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,180 INFO [STDOUT] INFO 04-06 21:52:08,180 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,242 INFO [STDOUT] INFO 04-06 21:52:08,242 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,258 INFO [STDOUT] INFO 04-06 21:52:08,258 (
) All users are guests.
21:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
NilAuthenticator.java:authenticate:35) All users are guests.
RepositoryServlet.java:allowUser:11321:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
) admin authenticated for rest api
PackageDeploymentServlet.java:execute:13421:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
) PackageName: s4testing
PackageDeploymentServlet.java:execute:13521:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
) PackageVersion: LATEST
PackageDeploymentServlet.java:execute:13621:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
) PackageIsLatest: true
PackageDeploymentServlet.java:execute:13721:52:08,305 INFO [STDOUT] INFO 04-06 21:52:08,305 (
) PackageIsSource: true
NilAuthenticator.java:authenticate:3521:52:08,367 INFO [PluginMgr] Successfully loaded plugin 'org.jboss.bpm.console.server.plugin.GraphViewerPlugin': class org.jbpm.integration.console.graph.GraphViewerPluginImpl
21:52:08,367 INFO [STDOUT] INFO 04-06 21:52:08,367 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,429 INFO [STDOUT] INFO 04-06 21:52:08,429 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,476 INFO [STDOUT] INFO 04-06 21:52:08,476 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,570 INFO [STDOUT] INFO 04-06 21:52:08,570 (
) All users are guests.
21:52:08,648 INFO [STDOUT] INFO 04-06 21:52:08,632 (
NilAuthenticator.java:authenticate:35) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,679 INFO [STDOUT] INFO 04-06 21:52:08,679 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,710 INFO [STDOUT] INFO 04-06 21:52:08,710 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,757 INFO [STDOUT] INFO 04-06 21:52:08,757 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,804 INFO [STDOUT] INFO 04-06 21:52:08,804 (
) All users are guests.
NilAuthenticator.java:authenticate:3521:52:08,851 INFO [STDOUT] INFO 04-06 21:52:08,851 (
) All users are guests.21:52:08,975 INFO [server] isRedirected -----start-------
21:52:08,975 INFO [server] isRedirected status line ->HTTP/1.1 200 OK
21:52:08,975 INFO [server] isRedirected -----start-------
21:52:08,975 INFO [server] isRedirected status line ->HTTP/1.1 200 OK
21:52:08,975 INFO [server] isRedirected Header ->no loaction
21:52:08,975 INFO [server] isRedirected Headers
21:52:08,975 INFO [server] Server = [Apache-Coyote/1.1]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] Apache-Coyote/1.1 = []
21:52:08,975 INFO [server] Pragma = [No-cache]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] No-cache = []
21:52:08,975 INFO [server] Cache-Control = [no-cache]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] no-cache = []
21:52:08,975 INFO [server] Expires = [Thu, 01 Jan 1970 10:00:00 EST]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] Thu = []
21:52:08,975 INFO [server] 01 Jan 1970 10:00:00 EST = []
21:52:08,975 INFO [server] X-Powered-By = [Servlet 2.5; JBoss-5.0/JBossWeb-2.1]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] Servlet 2.5 = []
21:52:08,975 INFO [server] Content-Type = [application/json]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] application/json = []
21:52:08,975 INFO [server] Transfer-Encoding = [chunked]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] chunked = []
21:52:08,975 INFO [server] Date = [Mon, 04 Jun 2012 11:52:08 GMT]
21:52:08,975 INFO [server] isRedirected Header Elements
21:52:08,975 INFO [server] Mon = []
21:52:08,975 INFO [server] 04 Jun 2012 11:52:08 GMT = []
21:52:08,975 INFO [server] isRedirected ------------
21:52:08,975 INFO [server] isRedirected return 4=false
21:52:08,975 INFO [server] Raw Response secHTTP/1.1 200 OK [Server: Apache-Coyote/1.1, Pragma: No-cache, Cache-Control: no-cache, Expires: Thu, 01 Jan 1970 10:00:00 EST, X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1, Content-Type: application/json, Transfer-Encoding: chunked, Date: Mon, 04 Jun 2012 11:52:08 GMT]
21:52:08,975 INFO [server] start after sec:------>{"definitions":[{"id":"au.com.s4.cert","name":"User Registration","version":1,"packageName":"s4testing","deploymentId":"N/A","suspended":false,"formUrl":"http://localhost:8080/gwt-console-server/rs/form/process/au.com.s4.cert/render","diagramUrl":"http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/s4testing/LATEST/au.com.s4.cert-image.png"},{"id":"com.sample.evaluation","name":"Evaluation","version":0,"packageName":"defaultPackage","deploymentId":"N/A","suspended":false,"formUrl":"http://localhost:8080/gwt-console-server/rs/form/process/com.sample.evaluation/render","diagramUrl":http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/defaultPackage/LATEST/com.sample.evaluation-image.png}]}
ull, falsecontent = requestPostService( targetHost, localcontext, serviceType, _callUrl,
localcontext.setAttribute(ClientContext.AUTH_CACHE , authCache);
-
5. Re: Problem with Rest Interface in JBPM 5.2
chandrasachin16 Jun 6, 2012 4:44 AM (in response to meyerschalk)Hi ,
I have few questions.Which version of JBPM are you using ? In my previous discussion I had discussed about error related to time out. I tried to investigate and found few things which I would like to put down.
My JBPM version is 5.2 and the url by which I was trying to authenticate was-> http://localhost:8080/gwt-console-server/rs/process/j_security_check
I checked the list of url available which are exposed by REST interface by using the url -> http://localhost:8080/gwt-console-server/rs/server/resources/jbpm
The list is as given below:
// List of url's ----------------------------------------------------------------------------- //
Server Info
General REST server information
GET /gwt-console-server/rs/server/status */* application/json
GET /gwt-console-server/rs/server/resources/{project} */* text/html
Process Management
Process related data.
POST /gwt-console-server/rs/process/definition/{id}/new_instance */* application/json
POST /gwt-console-server/rs/process/instance/{id}/state/{next} */* application/json
GET /gwt-console-server/rs/process/definition/{id}/image */* image/*
GET /gwt-console-server/rs/process/instance/{id}/activeNodeInfo */* application/json
GET /gwt-console-server/rs/process/definition/history/{id}/nodeInfo */* application/json
GET /gwt-console-server/rs/process/definitions */* application/json
POST /gwt-console-server/rs/process/definition/{id}/remove */* application/json
GET /gwt-console-server/rs/process/definition/{id}/instances */* application/json
GET /gwt-console-server/rs/process/instance/{id}/dataset */* text/xml
POST /gwt-console-server/rs/process/instance/{id}/end/{result} */* application/json
POST /gwt-console-server/rs/process/instance/{id}/delete */* application/json
POST /gwt-console-server/rs/process/tokens/{id}/transition */* application/json
POST /gwt-console-server/rs/process/tokens/{id}/transition/default */* application/json
GET /gwt-console-server/rs/process/definition/{id}/image/{instance} */* image/*
Task Lists
Access task lists
GET /gwt-console-server/rs/tasks/{idRef} */* application/json
GET /gwt-console-server/rs/tasks/{idRef}/participation */* application/json
Task Management
Manage task instances
POST /gwt-console-server/rs/task/{taskId}/assign/{ifRef} */* application/json
POST /gwt-console-server/rs/task/{taskId}/release */* application/json
POST /gwt-console-server/rs/task/{taskId}/close */* application/json
POST /gwt-console-server/rs/task/{taskId}/close/{outcome} */* application/json
User management
Manage user and groups
POST /gwt-console-server/rs/identity/sid/invalidate */* text/plain
GET /gwt-console-server/rs/identity/sid */* text/plain
GET /gwt-console-server/rs/identity/secure/sid */* text/plain
GET /gwt-console-server/rs/identity/user/roles */* application/json
GET /gwt-console-server/rs/identity/user/{actorId}/groups/ */* application/json
GET /gwt-console-server/rs/identity/group/{groupName}/members */* application/json
GET /gwt-console-server/rs/identity/user/{actorId}/actors */* application/json
Process Engine
Process runtime state
GET /gwt-console-server/rs/engine/deployments */* application/json
POST /gwt-console-server/rs/engine/deployment/{id}/delete */* application/json
POST /gwt-console-server/rs/engine/deployment/{id}/suspend */* application/json
GET /gwt-console-server/rs/engine/jobs */* application/json
POST /gwt-console-server/rs/engine/job/{id}/execute */* application/json
POST /gwt-console-server/rs/engine/deployment/{id}/resume */* application/json
Form Processing
Web based form processing
GET /gwt-console-server/rs/form/task/{id}/render */* text/html
GET /gwt-console-server/rs/form/process/{id}/render */* text/html
POST /gwt-console-server/rs/form/task/{id}/complete multipart/form-data text/html
POST /gwt-console-server/rs/form/process/{id}/complete multipart/form-data text/html
// End of list -----------------------------------//
As per my understanding this list will also include the url for authentication but the url http://localhost:8080/gwt-console-server/rs/process/j_security_check
is not in the list given above.Correct me if I am wrong if this url is not listed in the list it is bound to give me a time out error(a url which does not exist).I saw the solution given by Jeff where he had used url some thing like
http://localhost:8080/gwt-console-server/rs/identity/secure/j_security_check".Both are different.
I did a simple thing I replaced my authentication url http://localhost:8080/gwt-console-server/rs/process/j_security_check
with the url -> http://localhost:8080/gwt-console-server/rs/identity/secure/sid and it did not gave any time out error ,but the response was a blank string which was the same as in case of the code which Chris showed .
My biggest query is how and from where do I confirm which is the correct url for form authentication and secondly once form authentication is successfull what should be the response string .In Chris code it was a blank string and following was the output---------------------
start process1:------><html><head> <title>HTTP 401</title> <!-- Do not remove --></head><body><form method="POST" action="j_security_check"> <center/> <br><br> <div style="font-family:sans-serif;border:1px solid black; width:270;padding:15px;"> <h2>BPM Console Server</h2> <table with=250> <tr> <td>Username:</td> <td><input type="text" name="j_username"></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="j_password"></td> </tr> <tr> <td></td> <td align=right><input type="submit"/></td> </tr> </table> </div></form></body></html>
authentication2:------>
start process2:------>{"id":"104","definitionId":"yourProcessName","startDate":"2011-06-03 12:43:45","suspended":false,"rootToken":{"id":"1","name":"","currentNodeName":"","children":[],"availableSignals":[],"canBeSignaled":false}}
start process3:------>{"id":"105","definitionId":"yourProcessName","startDate":"2011-06-03 12:43:45","suspended":false,"rootToken":{"id":"2","name":"","currentNodeName":"","children":[],"availableSignals":[],"canBeSignaled":false}}
start process4:------>{"id":"106","definitionId":"yourProcessName","startDate":"2011-06-03 12:43:45","suspended":false,"rootToken":{"id":"3","name":"","currentNodeName":"","children":[],"availableSignals":[],"canBeSignaled":false}}
I am struggling which url is the right one and why am I not able to see it in the list of url's in JBPM 5.2. Can you please help me out .
-
6. Re: Problem with Rest Interface in JBPM 5.2
meyerschalk Jun 6, 2012 9:06 AM (in response to chandrasachin16)Here is some web sites for you to read - http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html and http://docs.jboss.org/jbossas/jboss4guide/r5/html/ch8.chapter.html
Basically in the gwt-console-server the rest services is expost and use form base authentications - so what happen is that you have called a secure web pages, and are redirected to a page to ask you your user credentials -
The authentication screen ask you to do a http "Post" on the submit to the j_security_check ( with the post you are forced to pass the j_username and j_password variables as parameters - in a get the call would habe looked something like this
you have to do this with on the same httpclient otherwise you will get a timeout.
So all Form base pages will have this behaviour..
in my code it look something like this
String secUrl = _jbpmRest+"/process/j_security_check";
content = authenticate(secUrl, _userId , _password);
_jbpmRest is the offset to http://localhost:8080/gwt-consoel-server/rs - this is not hard coded for obvious reasons
Basically if you are autheticated in a httpclient session then that authentication will be valid for the life of the session
_userid, and _password is the authentication credential for the user I am logged in as....
I know that you want to get started and build some workflows, but I can suggest that get a good grounding in j2ee web applications and there are a range of free internet resources available to get started like the pages I suggest earlier. Or you can join Safari online and enjoy some of the online books they have available
I hope this help. .
-
7. Re: Problem with Rest Interface in JBPM 5.2
chandrasachin16 Jun 11, 2012 2:21 AM (in response to meyerschalk)Hi ,
Thanks for the valuable suggestion. Finally I managed to trigger my process.
Regards
Sachin