Probleme avec le connecteur sql AS400

Bonjour.

Je rencontre actuellement une erreur en utilisant le connecteur sql AS400. En sortie de ce connecteur, je récupère un ResultSet. Lorsque j’essaye d’exploiter cet sortie pour récupérer les lignes de données, j’ai droit à l’erreur : org.bonitasoft.engine.commons.exceptions.SBonitaRuntimeException : “java.lang.NoClassDefFoundError: java/sql/SQLType”

Cette erreur est liée au fait que le connecteur n’arrive pas à trouver la classe SQLType. Cette classe existe uniquement dans Java 1.8.
Or au mois d’aout, on m’avait signalé que java 1.8 n’est pas supporté par Bonita 6.3.X. Et depuis j’utilise le jre 1.7.

J’ai trouvé un site qui parle d’un problème similaire :
http://www.fusion-reactor.com/support/kb/frs-345/

Est ce que aujourd’hui java 1.8 est supporté par Bonita ?
Si non, est ce que vous avez une solution à me conseiller ?

Merci d’avance.

PS : J’utilise actuellement Bonita studio 6.3.7.

Bonjour,

Afin d’assurer un meilleur suivi du problème, pouvez vous le remonter ici:
https://bonita.atlassian.net

Nous aurions besoin des éléments suivants:

  • une stacktrace complète
  • la version du driver AS 400 utilisé (nous avons un doute sur sa compatibilité avec votre version de Java)

Pour répondre à votre question précédente: nous ne sommes toujours pas compatible avec Java 8 à l’heure actuelle (v6.4.0).

Cordialement,

Est-ce que l’erreur se produit lors de la configuration dans le Studio, ou pendant l’exécution ?

L’erreur se produit à l’exécution.

Petite précision, j’utilise le code suivant pour extraire les données du resultSet :

import java.sql.ResultSetMetaData;

List list = new ArrayList();

ResultSetMetaData metadata = resultset.getMetaData();
int numberOfColumns = metadata.getColumnCount();

//resultset.beforeFirst();

while (resultset.next()) {
int i = 1;
while (i <= numberOfColumns) {
list.add(resultset.getString(i++));
}
}
return list;

Hi,

Can you provide the full stacktrace please?

regards,

Voici la stacktrace complète :

2015-01-19 10:02:42 org.bonitasoft.engine.external.web.forms.ExecuteActionsAndTerminateTask
INFOS: THREAD_ID=106 | HOSTNAME=W28323 | TENANT_ID=1 | The user has executed the task [name = <Entrer le nom de l’objet>, display name = <Entrer le nom de l’objet>, id = <99>, parent process instance = <14>, root process instance = <14>, process definition = <5898929563435961241>]
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: username YLombardi
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: password ******
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: script select table_name from PPSCO.sysibm.tables WHERE Table_schema = ‘AAA_TESTS’
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: separator null
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: driver com.ibm.as400.access.AS400JDBCDriver
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: url jdbc:as400:SIPPROD2;database name=PPSCO;prompt=false;translate binary=true;naming=system
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: outputType null
2015-01-19 10:02:43 org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork
AVERTISSEMENT: THREAD_ID=394 | HOSTNAME=W28323 | TENANT_ID=1 | The work [ExecuteConnectorOfActivity: flowNodeInstanceId = 103, connectorDefinitionName = listerTablesDansLibTemporaire] failed. The failure will be handled.
2015-01-19 10:02:43 org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork
AVERTISSEMENT: THREAD_ID=394 | HOSTNAME=W28323 | TENANT_ID=1 | org.bonitasoft.engine.commons.exceptions.SBonitaRuntimeException : “java.lang.NoClassDefFoundError: java/sql/SQLType”

Je rencontre ce problème lorsque j’utilise le JRE7 de java. Lorsque je switch sur la version JRE8, le problème n’est plus présent.

Bonjour.

Merci pour ces informations.

La stacktrace complète :

2015-01-19 10:02:42 org.bonitasoft.engine.external.web.forms.ExecuteActionsAndTerminateTask
INFOS: THREAD_ID=106 | HOSTNAME=W28323 | TENANT_ID=1 | The user has executed the task [name = <Entrer le nom de l’objet>, display name = <Entrer le nom de l’objet>, id = <99>, parent process instance = <14>, root process instance = <14>, process definition = <5898929563435961241>]
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: username YLombardi
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: password ******
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: script select table_name from PPSCO.sysibm.tables WHERE Table_schema = ‘AAA_TESTS’
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: separator null
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: driver com.ibm.as400.access.AS400JDBCDriver
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: url jdbc:as400:SIPPROD2;database name=PPSCO;prompt=false;translate binary=true;naming=system
2015-01-19 10:02:43 org.bonitasoft.connectors.database.jdbc.JdbcConnector
INFOS: outputType null
2015-01-19 10:02:43 org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork
AVERTISSEMENT: THREAD_ID=394 | HOSTNAME=W28323 | TENANT_ID=1 | The work [ExecuteConnectorOfActivity: flowNodeInstanceId = 103, connectorDefinitionName = listerTablesDansLibTemporaire] failed. The failure will be handled.
2015-01-19 10:02:43 org.bonitasoft.engine.execution.work.FailureHandlingBonitaWork
AVERTISSEMENT: THREAD_ID=394 | HOSTNAME=W28323 | TENANT_ID=1 | org.bonitasoft.engine.commons.exceptions.SBonitaRuntimeException : “java.lang.NoClassDefFoundError: java/sql/SQLType”

La version du driver AS400 utilisée est la jt400-full-7.7.1.jar

Merci pour votre réponse.

Je ne parvient pas à retrouver le fichier JAR du driver sur le net.

S’agit-il d’un renommage de celui-ci:

Lien: http://sourceforge.net/projects/jt400/files/JTOpen-full/7.7.1/

Archive: jtopen_7_7_1_jdbc40_jdk6.zip

Fichier: /lib/jt400.jar

Aussi, pourriez vous vérifier que vous n’embarquez pas d’autres dépendances qui pourraient entrer en conflit:

  • dans votre processus?
  • au niveau du serveur d’application?

Oui il s’agit bien de celui ci que j’avais renommer.

J’ai aussi un connecteur personnalisé qui utilise la librairie dans sa version jt400-8.4.
D’ailleurs, maintenant que j’y pense, les problèmes ont commencé à apparaitre quand j’ai commencé à utiliser la version 8.4 dans mes nouveaux connecteurs. C’est peut être ça qui cause les problèmes.

Après quelques heures de recherche je n’ai pas réussi à trouver lequel de mes connecteurs crée un conflit.

Par contre j’ai trouvé une solution temporaire qui semble résoudre le problème.
Le problème en question provenant du fait que le connecteur n’arrive pas à trouver la classe ResultSet, j’ai juste ajouté un import de cette classe dans mon code. Du coup le problème semble avoir disparu.

Voila le code “corrigé” :

import java.sql.ResultSet; // ajout de cet import
import java.sql.ResultSetMetaData;

List<String> list = new ArrayList<String>();
 
ResultSetMetaData metadata = resultset.getMetaData();
int numberOfColumns = metadata.getColumnCount();
 
while (resultset.next()) {
int i = 1;
while (i <= numberOfColumns) {
list.add(resultset.getString(i++));
}
}
return list;