2013-06-27 10 views
0

Я следую руководству wiki в alfresco по веб-скриптам, поддерживающим java, и не могу заставить его работать. Что еще хуже, я не могу допустить ошибки в журналах или иначе, или список веб-страниц в/alfresco/service/index/all.java backed webscript вообще не отображается

Помимо примера wiki, я не использую AMP, а jar для своих классов. Это связано с тем, что я обязан добавлять свои веб-скрипты в существующее приложение, которое в настоящее время создает банку.

Насколько я понимаю, есть три основных этапа в создании Java поддержке WebScript:

  1. Создать класс
  2. Java Регистрация боба
  3. Место дескрипторе

Я реализовал это следующим образом. Расположение файлов относительно корня jar. нл/знак/на открытом воздухе/MyService/WebScript/GetFooTypes.java

package nl.mark.alfresco.myservice.webscript; 

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

import org.springframework.extensions.webscripts.DeclarativeWebScript; 
import org.springframework.extensions.webscripts.Status; 
import org.springframework.extensions.webscripts.WebScriptRequest; 

public class GetFooTypes extends DeclarativeWebScript { 
    @Override 
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) { 
     Map<String, Object> model = new HashMap<String, Object>(); 
     model.put("types", "[\"foo\", \"bar\"]"); 
     return model; 
    } 
} 

под открытым небом/расширение/шаблоны/webscripts/нл/марка/бинокль/footype.desc.xml

<webscript> 
    <shortname>Retrieve a list of foo types associated to a bar type.</shortname> 
    <description>Returns an empty JSON array or a JSON array filled with foo types as Strings, named 'types'.</description> 
    <url>/mark/cacher/footype?typecode={code}</url> 
    <authentication>user</authentication> 
    <family>Mark cacher</family> 
</webscript> 

под открытым небом/продление/наценка context.xml

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'> 

<beans> 
    <!-- Java backed webscripts --> 
    <bean id="webscript.nl.mark.cacher.footype.get" class="nl.mark.alfresco.myservice.webscript.GetFooTypes" 
     parent="webscript"> 
    </bean> 
</beans> 

Этот файл mark-context.xml содержит и другие регистрации, которые отображаются правильно.

Наконец, этот фляга помещается в папку WEB-INF/lib в alfresco, после которой сервер перезапускается. Тем не менее, веб-сайт недоступен по его URL-адресу (404), и я не нахожу упоминания о чем-либо, связанном с (значимо чистыми) журналами. Он также не указан в индексе веб-скриптов, даже если он не загружен. Я чувствую, что я запутываю файлы.

+2

Быстрый догадка (нет проточной Alfresco здесь): переименовать дескриптор «footype.get.desc.xml» –

ответ

4

Полный каталог и имя файла

alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml 

определяет,

Пакет нл/марка/Cacher,

служебный идентификатор footype,

Связывание с HTT P GET

<bean id="webscript.nl.mark.cacher.footype.get" 
     class="nl.mark.alfresco.myservice.webscript.GetFooTypes" 
     parent="webscript"> 
</bean> 

Приоритетный веб-сайт подхвачен движком Web Script. Окончание получения зависит от механизма веб-скрипта. Он сообщает механизму веб-скрипта, с каким HTTP-способом обрабатываться. В этом случае HTTP GET

Так что в вашем коде вы пропустили .получить в имени дескриптора файла файла

Ссылка: http://wiki.alfresco.com/wiki/Web_Scripts http://wiki.alfresco.com/wiki/Java-backed_Web_Scripts_Samples

+0

Я сделал ошибку в вопрос, дескриптор был фактически назван 'footype.desc.get.xml'. Который, действительно, по-прежнему не прав. Решение: 'footype.get.desc.xml', как вы сказали. Застрял на этом больше дня, я думаю, что я сейчас и задушу что-нибудь: P. Благодаря! –

+0

Идентификатор Spring bean должен быть 'webscript.nl.mark.cacher.footype.get', как в конфигурации, заданной в вопросе. Вам не указан идентификатор службы. –

+0

@WillAbson, Да, обновлено –

2

Я думаю, что файл описания должен быть назван footype.get.desc.xml