2015-01-01 2 views
0

У меня есть проект JAVA-EE, в котором используется «рестайл-2.2» в моем Intellij 13.1.4.Развертывание веб-проекта Restlet от Intelij до apache tomcat?

Я хочу, чтобы развернуть этот проект Apache Tomcat сервер, но у меня возникли некоторые проблемы.

проекта Структура

1.I имеют некоторые классы JAVA, которые в основном различные веб-сервисы. Все эти классы расширяют класс ServerResource. У этих классов есть методы @Get внутри них, которые будут отвечать на запрос клиента.

2.Then У меня есть класс MyServer, который расширяет Применение класса и в MyServer У меня есть объект класса Router, который в основном маршруты запросы на соответствующие веб-сервисов в зависимости от URI.

3.web.xml - Intellij по умолчанию создает web.xml с версией = "3.1" и добавляет ничего в него. Таким образом, я изменил эту web.xml (Добавление ниже web.xml)

Я сделал конфигурацию артефакты и в моей «война взорвалась» Я следующая структурой

WEB-INF 
--classes 
    -----| All compiled class files 
--lib 
    -----| restlet jar files and json jar files (org.json.jar org.restlet.jar org.restlet.ext.json.jar org.restlet.ext.servlet.jar) 
--web.xml 

Когда я поставил это разобранном войну моя папка apache tomcat webapps и перезапустите tomcat, тогда я могу получить доступ к файлам html/css/js. Но мои вызовы AJAX всегда дают ERROR 404. Я пробовал все решения из stackoverflow и других веб-сайтов, но ничего не помогло.

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 
    <!-- Application class name --> 
    <context-param> 
     <param-name>org.restlet.application</param-name> 
     <param-value> 
      MyServer 
     </param-value> 
    </context-param> 

    <!-- Restlet adapter --> 
    <servlet> 
     <servlet-name>ServerServlet</servlet-name> 
     <servlet-class> 
      org.restlet.ext.servlet.ServerServlet 
     </servlet-class> 
    </servlet> 

    <!-- Catch all requests --> 
    <servlet-mapping> 
     <servlet-name>ServerServlet</servlet-name> 
     <url-pattern>/Projects/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

MyServer класс

Router classpublic class MyServer extends Application{ 

     public static void main(String []args) 
     { 
      Component component = new Component(); 
      component.getServers().add(Protocol.HTTP, 8080); 
      Application application = new MyServer(); 
      // Attach the application to the component and start it 
      component.getDefaultHost().attach(application); 
      try { 
       component.start(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

     //Method for attaching the URIs for web services 
     public synchronized Restlet createInboundRoot() 
     { 
      Router router = new Router(getContext()); 

      //System.out.println("In router"); 

      //Attaching URIsl 
      router.attach("/Projects/{projectID}/Enclosures/{enclID}/getStructure", StructureCalculations.class); 
    } 
} 

И мой AJAX называют URI выглядит так

http://localhost:8080/Projects/p1/Enclosures/e1/getStructure?param1=x&param2=y 

ответ

0

Вы можете сослаться здесь: https://vatsalad.wordpress.com/2010/01/13/how-to-setup-a-servlet-based-restlet-webservice/

Однако, я думаю, почему вы не развернуть Restlet проект вроде как окно службы вместо веб-приложения? Потому что в любом случае веб-приложение должно работать на платформе веб-сервисов, которая является tomcat. Действительно, когда вы запускаете приложение restlet, оно также нравится как tomcat. Он будет прослушивать запрос с определенного порта, который вы установили в своем коде.

Смежные вопросы