Nombre de paramètre par GET

cancel
Showing results for 
Search instead for 
Did you mean: 
levy65
Member II

Nombre de paramètre par GET

Bonjour,

je vous demande votre aide pour un problème qui me cause bien du souci, et qui je pense sera très vite résolu.

Voilà en gros le principe, c'est que je veux lancer un webscript avec un nombre de x de paramètrse.
Le rôle de ce script serait de gérer les permissions sur des dossiers. donc en gros je lancerai ce genre de lien pour mon webscript
http://localhost:8080/alfresco/service/sample/args?8190=toto1&6019=toto2&8630=toto3

Dans mon cas, les nombres sont les noms de dossier et les totos les utilisateurs concernés.

Mon problème il se trouve au niveau de ce lien, la gestion des permissions marche avec une url comme celle que vous voyez … en réalité elle marche tant que le nombre d'argument ne dépasse pas 6, et c'est très contraignant pour moi étant donné que je vais braser bien plus que 6 dossiers.

Alors voici le message d'erreur que j'ai, je le comprend mais je sais pas comment le prendre en compte en faite :
Web Script Status 500 - Internal Error

The Web Script /alfresco/service/sample/args has responded with a status of 500 - Internal Error.

500 Description:    An error inside the HTTP server which prevented it from fulfilling the request.

Message:   04090241 Wrapped Exception (with status template): 04090323 Failed to execute script '/args.get.js (in repository store workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web)': SqlMapClient operation; SQL []; — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1

Exception:   com.mysql.jdbc.MysqlDataTruncation - Data truncation: Data too long for column 'authority' at row 1

com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3564)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)
com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364)
org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeUpdate(SqlExecutor.java:100)
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:393)
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
org.springframework.orm.ibatis.SqlMapClientTemplate$8.doInSqlMapClient(SqlMapClientTemplate.java:366)
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:200)
org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:364)
org.alfresco.repo.domain.permissions.ibatis.AclCrudDAOImpl.createAuthorityEntity(AclCrudDAOImpl.java:394)
org.alfresco.repo.domain.permissions.AbstractAclCrudDAOImpl$AuthorityEntityCallbackDAO.createValue(AbstractAclCrudDAOImpl.java:948)
org.alfresco.repo.domain.permissions.AbstractAclCrudDAOImpl$AuthorityEntityCallbackDAO.createValue(AbstractAclCrudDAOImpl.java:927)
org.alfresco.repo.cache.lookup.EntityLookupCache.getOrCreateByValue(EntityLookupCache.java:469)
org.alfresco.repo.domain.permissions.AbstractAclCrudDAOImpl.createAuthority(AbstractAclCrudDAOImpl.java:826)
org.alfresco.repo.domain.permissions.AbstractAclCrudDAOImpl.getOrCreateAuthority(AbstractAclCrudDAOImpl.java:883)
org.alfresco.repo.domain.permissions.AclDAOImpl.setAccessControlEntry(AclDAOImpl.java:1218)
org.alfresco.repo.domain.permissions.AbstractPermissionsDaoComponentImpl.setPermission(AbstractPermissionsDaoComponentImpl.java:430)
sun.reflect.GeneratedMethodAccessor668.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:215)
$Proxy9.setPermission(Unknown Source)
org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.setPermission(PermissionServiceImpl.java:899)
org.alfresco.repo.security.permissions.impl.PermissionServiceImpl.setPermission(PermissionServiceImpl.java:981)
sun.reflect.GeneratedMethodAccessor659.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy20.setPermission(Unknown Source)
sun.reflect.GeneratedMethodAccessor659.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
net.sf.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:80)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:44)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.alfresco.repo.audit.AuditMethodInterceptor.proceedWithAudit(AuditMethodInterceptor.java:217)
org.alfresco.repo.audit.AuditMethodInterceptor.proceed(AuditMethodInterceptor.java:184)
org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:137)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
$Proxy53.setPermission(Unknown Source)
org.alfresco.repo.jscript.ScriptNode.setPermission(ScriptNode.java:1393)
sun.reflect.GeneratedMethodAccessor667.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
org.mozilla.javascript.gen.c261._c0(workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web/args.get.js:14)
org.mozilla.javascript.gen.c261.call(workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web/args.get.js)
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
org.mozilla.javascript.gen.c261.call(workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web/args.get.js)
org.mozilla.javascript.gen.c261.exec(workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web/args.get.js)
org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:472)
org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:190)
org.alfresco.repo.processor.ScriptServiceImpl.executeScript(ScriptServiceImpl.java:282)
org.alfresco.repo.web.scripts.RepositoryScriptProcessor.executeScript(RepositoryScriptProcessor.java:102)
org.springframework.extensions.webscripts.AbstractWebScript.executeScript(AbstractWebScript.java:981)
org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:86)
org.alfresco.repo.web.scripts.RepositoryContainer$2.execute(RepositoryContainer.java:383)
org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:381)
org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecute(RepositoryContainer.java:436)
org.alfresco.repo.web.scripts.RepositoryContainer.transactionedExecuteAs(RepositoryContainer.java:466)
org.alfresco.repo.web.scripts.RepositoryContainer.executeScript(RepositoryContainer.java:304)
org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
org.springframework.extensions.webscripts.servlet.WebScriptServlet.service(WebScriptServlet.java:118)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.alfresco.web.app.servlet.GlobalLocalizationFilter.doFilter(GlobalLocalizationFilter.java:58)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555)
java.lang.Thread.run(Thread.java:619)

Exception:   com.ibatis.common.jdbc.exception.NestedSQLException - — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1

com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:107)

Exception:   org.springframework.dao.DataIntegrityViolationException - SqlMapClient operation; SQL []; — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1

org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101)

Exception:   org.alfresco.scripts.ScriptException - 04090323 Failed to execute script '/args.get.js (in repository store workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web)': SqlMapClient operation; SQL []; — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1

org.alfresco.repo.jscript.RhinoScriptProcessor.execute(RhinoScriptProcessor.java:194)

Exception:   org.springframework.extensions.webscripts.WebScriptException - 04090241 Wrapped Exception (with status template): 04090323 Failed to execute script '/args.get.js (in repository store workspace://SpacesStore/Espace racine/Dictionnaire de données/Extensions de script Web)': SqlMapClient operation; SQL []; — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException: — The error occurred in alfresco/ibatis/#resource.dialect#/permissions-insert-SqlMap.xml. — The error occurred while applying a parameter map. — Check the alfresco.permissions.insert_Authority-InlineParameterMap. — Check the statement (update failed). — Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'authority' at row 1

org.springframework.extensions.webscripts.AbstractWebScript.createStatusException(AbstractWebScript.java:758)

Server:   Community v3.4.0 (d 3370) schema 4 113
Time:   9 mai 2011 16:43:25

Diagnostics:   Inspect Web Script (args.get)


Je vois bien qu'il y a une valeur à changer car c'est une histoire de limitation, mais je me casse la tête à trouver où on peut toucher cette valeur.
Je vous donne le code tout de même du xml car je me suis dis qu’éventuellement le réglage pouvait venir de là sans avoir pour autant trouver la solution.


<webscript>
<shortname>Changer permission</shortname>
<description>Changer permission</description>
<url>/sample/args</url>
<authentication>admin</authentication>
<transaction>required</transaction>
</webscript>

Je vous remercie d'avance,

Cordialement
2 Replies
rguinot
Customer

Re: Nombre de paramètre par GET

Plusieurs remarques :

- Quelle est la longueur de vos nom d'utilisateurs ? (limité à 100 caractères)
- Il y a un problème de design. Vous ne devriez pas utiliser GET pour enchainer des paramètres de même signification à tire-larigot. Il vaudrait mieux avoir un webscript POST sur lequel par exemple vous posteriez un array json avec tous les couples à traiter.
- Il n'y a pas de limite a 5 parametres, il doit y avoir un erreur dans votre code javascript (essayez vous de stocker tous les paramètres en un ? )

- Vos URL de webscript devraient définir la liste des paramètres attendus, exemples :

<url>/office/searchResults?search={searchString?}&amp;maxresults={maxresults?}</url>
<url>/slingshot/doclib/action/move-to/site/{site}/{container}/{path}</url>

Vous pouvez spécifier plusieurs URL avec des params différents par webscript.
levy65
Member II

Re: Nombre de paramètre par GET

Tout d'abord merci pour votre réponse,

Oui je sais ce que je voulais faire est un peu crade,
Utiliser la méthode POST était dans mon idée au début, mais les paramètres que je veux récupérer dans mon webscript ne font pas parti d'Afresco, c'est des fichiers en local (il y en a beaucoup) qui contiennent les règles d'affectation pour les permissions sur les folders (avec un nom unique).

Donc concrètement je me récupérais ces règles par un script PHP indépendant d'Alfresco, je les stock, et je les donne à manger à mon webscript pour qu'il fasse ses affectations.

Le problème que j'avais (enfin je l'ai encore plus ou moins) c'est de faire passer mon array à mon webscript. Vous me parlez d'array json je vais justement essayer de me focaliser là dessus ça sera plus propre que ce que j'ai fais. (Car là il fonctionne mais en faite le tableau je me le fais passé avec 1 paramètre chaîne de caractère et je me le recréer dans Alfresco grâce à la méthode Split … ça marche mais vous imaginez la tête de l'URL).
Pas de problème au niveau des utilisateurs il font 10 caractères.

Oui pour les paramètres je ne l'ai plus sous les yeux mais il devait y avoir un pétio, il marchait avec 5 paramètres mais pas avec 6.

Je ne pense pas avoir besoin de plusieurs URL, seulement je dois les réunir afin de les récupère dans le webscript (l'idéal à mon sens est un ou deux arrays de taille X) mais  pas en générant une URL de 10 bornes.


En tout cas je vais me renseigner sur json, ça pourrait bien être la solution à tous mes traquas

Je vous remercie rguinot,

Cordialement.