спокойный сервис без MVC

Я хотел создать службу Restful, но когда я попытался использовать URL-адрес "http..:8080/appanalytix-web/requirementservice/saverequirements", он не работает.

Мой сервис:

@Path("/requirementservice")
@Service("dimRequirementManager")
public class DimRequirementManagerImpl extends GenericManagerImpl<DimRequirement, Long> implements DimRequirementManager {
    DimRequirementDao dimRequirementDao;

    @Autowired
    public DimRequirementManagerImpl(DimRequirementDao dimRequirementDao) {
        super(dimRequirementDao);
        this.dimRequirementDao = dimRequirementDao;
    }
    @PUT
    @Path("/saverequirements")
    @Consumes("application/json")
    @Override
    public void saveAllDimRequirements(List<DimRequirement> requirementList) {
        dimRequirementDao.saveAllDimRequirements(requirementList);

    }
}

Нужно ли иметь диспетчерский сервлет для использования URL-адреса? И поскольку это мой сервис, как клиент передаст строку json, используя HTTP PUT или POST

ИЗМЕНИТЬ После добавления сервлета

<servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
         <param-name>contextConfigLocation</param-name>  
         <param-value></param-value>  
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/restServices/*</url-pattern>
    </servlet-mapping>

я добавил сервлет в web.xml и попробовал URL http..:8080/appanalytix-web/restServices/requirementservice/saverequirements я получаю следующую ошибку

 ERROR [tomcat-http--17] Dispatcher.error(38) | Exception occurred during processing request: There is no Action mapped for namespace [/] and action name [restServices/requirementservice/saverequirements] associated with context path [/appanalytix-web].
There is no Action mapped for namespace [/] and action name [restServices/requirementservice/saverequirements] associated with context path [/appanalytix-web]. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:534)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
    at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.vxl.appanalytix.webapp.filter.RequestAuthentication.doFilter(RequestAuthentication.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

person jos    schedule 16.09.2013    source источник
comment
Конечно, вам нужен сервлет. Как вы думаете, что будет отображать аннотации @Path?   -  person Sotirios Delimanolis    schedule 16.09.2013
comment
с помощью сервлета despacher, могу ли я получить доступ к сервису от клиента?   -  person jos    schedule 16.09.2013
comment
поэтому мой URL-адрес будет http..:8080/project/Dispacher-servletURL/requirementservice/saverequirements   -  person jos    schedule 16.09.2013
comment
Рекомендую попробовать и убедиться в этом.   -  person Sotirios Delimanolis    schedule 16.09.2013


Ответы (1)


У вас должен быть сервлет, иначе аннотация @Path ничего не делает. В методе saveAllDimRequirements вам придется использовать put, потому что у вас есть аннотация @PUT.

person Avi    schedule 16.09.2013
comment
‹servlet› ‹servlet-name›dispatcher‹/servlet-name› ‹servlet-class›org.springframework.web.servlet.DispatcherServlet‹/servlet-class› ‹init-param› ‹param-name›contextConfigLocation‹/param- name› ‹param-value›‹/param-value› ‹/init-param› ‹load-on-startup›2‹/load-on-startup› ‹/servlet› ‹servlet-mapping› ‹servlet-name›dispatcher ‹/servlet-name› ‹url-pattern›/restServices/*‹/url-pattern› ‹/servlet-mapping› я добавил сервлет - person jos; 16.09.2013
comment
какой будет точный URL, который я могу использовать? - person jos; 16.09.2013
comment
Скорее всего что-то вроде: http://<server-ip>:8080/<project-name>/restServices/requirementservice/saverequirements - person Avi; 16.09.2013
comment
Если у вас возникли проблемы, я предлагаю вам сначала изменить @PUT на @GET и удалить @Consumes("application/json"). Перейдите к этому URL-адресу через браузер (с точкой останова в вашем коде) и посмотрите, появится ли он. Если это так, вы можете вернуться к @PUT и application/json - person Avi; 16.09.2013
comment
привет, Ави, я все еще получаю ту же ошибку Произошло исключение во время обработки запроса: Нет действия, сопоставленного для пространства имен [/] и имени действия [restServices/requirementservice/saverequirements], связанного с контекстным путем [/appanalytix-web] - person jos; 17.09.2013