cancel
Showing results for 
Search instead for 
Did you mean: 

recherche query (Java Backed Web Script) [résolu]

fmarin
Champ in-the-making
Champ in-the-making
bonjour

j'ai un environnement alfresco 4.2.c, et développe en java sous eclipse juno (j'ai intégré le sd4 4.2.c)

je compile sans erreur le code suivant :

        Reference parentReference = null;
        // Get a reference to the respository web service
        RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();        
        // Create a query object, looking for all items with alfresco in the name of text
        Query query = new Query(Constants.QUERY_LANG_LUCENE, "TEXT:'test'");
        // Execute the query
        QueryResult queryResult = repositoryService.query(
new Store(Constants.WORKSPACE_STORE, "SpacesStore"),
query, false);


mais au restart de Tomcat (celui de l'instance alfresco), le bean ne se construit pas

log dans alfresco :
<blockcode>…Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/alfresco/webservice/types/Store</blockcode>

J'ai cherché les différences dans les jar du sdk et de l'instance d'alfresco :
- dans eclipse, la classe store est ben présente dans alfresco.webservice.types.store (et le code se compile)
- dans alfresco, le seul jar contenant une classe store est alfresco.repo.webservice.types.store

Je parie plutôt sur un code obsolete, mais n'ai suis au bout de mes réponse

merci pour votre aide

Frédéric Marin
10 REPLIES 10

fmarin
Champ in-the-making
Champ in-the-making
J'ai enfin trouvé ce qui se passait : j'ai commenté dans le code un accès au SearchService qui était refusé … (je l'ai commenté, et en morale, toujours faire attention aux accès aux services)

J'ai eu un peu de mal pour ce bout de code, en lisant des tonnes de doc, en ayant la chance de tomber sur des explications, partielles à chaque fois, mais en trouvant de l'aide sur le forum …

Je joins le code pour d'autres qui se retrouveraient dans le même cas.

ci après le ~context.xml, et le code java

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
  "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
  <bean id="webscript.com.alfeo.alfresco.stock.analyse.stockage.get"
    class="com.alfeo.alfresco.stock.analyse.StockageTestV2" parent="webscript">
      <property name="serviceRegistry"><ref bean="ServiceRegistry"/></property>
      <property name="searchService"><ref bean="SearchService"/></property>
  </bean>
</beans>



import java.util.HashMap;
import java.util.Map;

import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.search.ResultSet;
import org.alfresco.service.cmr.search.SearchParameters;
import org.alfresco.service.cmr.search.SearchService;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;

public class StockageTestV2 extends DeclarativeWebScript
{
    private ResultSet results = null;
    private StoreRef stRef=null;
    private String query=null;
   
    private ServiceRegistry serviceRegistry;
    private SearchService searchService;

    public void setServiceRegistry(ServiceRegistry serviceRegistry)
    {
       this.serviceRegistry=serviceRegistry;
    }
    public ServiceRegistry getServiceRegistry()
    {
   return this.serviceRegistry;
    }
    public void setSearchService(SearchService searchService)
    {
       this.searchService=searchService;
    }
    public SearchService getSearchService()
    {
      return this.searchService;
    }

    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
    {
        stRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE,"SpacesStore");
        query = "PATH:\"/app:company_home\"";
       
   //System.out.println("—->this.searchService ="+getSearchService());
       
   SearchParameters searchParameters = new SearchParameters();
   searchParameters.addStore(stRef);
   searchParameters.setQuery(query);
   searchParameters.setLanguage(SearchService.LANGUAGE_LUCENE);

   results = getServiceRegistry().getSearchService().query(searchParameters);
      
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("mess", "slt");
        return model;
    }
}


Frédéric Marin