2017-02-21 40 views
0

Я пытаюсь получить данные из службы java с использованием углового и трикотажного сервлета, но я все время получаю ошибку 404 Not Found для http://localhost:8080/ContactList/users.Угловые данные потребления из Rest API

Вот мои app.js

angular.module('ContactList', ['ngRoute', 'ngResource', 'ngMessages']) 
.config(function ($routeProvider, $locationProvider) { 

    $locationProvider.html5Mode(true); 

    $routeProvider 
     .when('/ContactList', { 
      controller: 'MyCtrl1', 
      templateUrl: '/ContactList/resources/html/view.html' 
     }); 
}); 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

    <!-- The definition of the Root Spring Container shared by all Servlets and Filters --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/root-context.xml</param-value> 
    </context-param> 

    <!-- Creates the Spring Container shared by all Servlets and Filters --> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <!-- Processes application requests --> 
    <servlet> 
     <servlet-name>appServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>appServlet</servlet-name> 
     <url-pattern>/ContactList/*</url-pattern> 
    </servlet-mapping> 

</web-app> 

controller.js

angular.module('ContactList') 
.controller('MyCtrl1', ['$scope', 'UserFactory', function ($scope, UserFactory) { 
UserFactory.get({}, function (userFactory) { 
    $scope.firstname = userFactory.firstName; 
}) 
}]); 

Services.js

angular.module('ContactList') 
.factory('UserFactory', function ($resource) { 
return $resource('/ContactList/users', {}, { 
    query: { 
     method: 'GET', 
     params: {}, 
     isArray: false 
    } 
}) 
}); 

И, наконец, мой UserRestService.java

import javax.ws.rs.GET; 
    import javax.ws.rs.Path; 
    import javax.ws.rs.Produces; 
    import javax.ws.rs.core.MediaType; 

    public class UserRestService { 

    @RequestMapping(value = "/users", method = RequestMethod.GET) 
    public User getDefaultUserInJSON() { 
     UserService userService = new UserService(); 
     return userService.getDefaultUser(); 
    } 
} 

На мой взгляд, я просто пытаюсь вывести результат вызова Rest:

Result from RESTful service is: {{ firstname }}

Любые идеи о том, почему он не ударять услуги ? Мое первоначальное подозрение было моим $resource в моем services.js.

Edit - Tomcat 7: запустить ошибка


`Running war on http://localhost:8080/ 
[INFO] Creating Tomcat server configuration at C:\ContactList\target\tomcat 
[INFO] create webapp with contextPath: 
Feb 21, 2017 6:23:55 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Feb 21, 2017 6:23:55 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Tomcat 
Feb 21, 2017 6:23:55 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 
Feb 21, 2017 6:23:55 PM org.apache.catalina.core.ContainerBase startInternal 
SEVERE: A child container failed during start 
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 
     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
     at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]] 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 
     ... 6 more 
Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer 
     at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1670) 
     at org.apache.catalina.startup.ContextConfig.getServletContainerInitializers(ContextConfig.java:1652) 
     at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1562) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
` 

pom.xml

`<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.wwt</groupId> 
    <artifactId>ContactList</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
     <java-version>1.8</java-version> 
     <org.springframework-version>3.1.0.RELEASE</org.springframework-version> 
    </properties> 
    <dependencies> 

     <!--Spring--> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>org.springframework.transaction</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>org.springframework.core</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>org.springframework.jdbc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>org.springframework.orm</artifactId> 
      <version>${org.springframework-version}</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Oracle driver --> 
     <dependency> 
      <groupId>com.oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.2.1.RELEASE</version> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.6.1</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-servlet</artifactId> 
      <version>LATEST</version> 
     </dependency> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-json</artifactId> 
      <version>1.9</version> 
     </dependency> 
     <dependency> 
      <groupId>com.owlike</groupId> 
      <artifactId>genson</artifactId> 
      <version>1.4</version> 
     </dependency> 

    </dependencies> 

    <build> 
     <finalName>ContactList</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>${java-version}</source> 
        <target>${java-version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <warName>ContactList</warName> 
       <webappDirectory>../ContactList/target/ContactList</webappDirectory> 
      </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>install</id> 
         <phase>install</phase> 
         <goals> 
          <goal>sources</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <path>/${project.build.finalName}</path> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project>` 
+0

Пожалуйста, попробуйте нажать на службу из браузера, чтобы отказаться от возможности сервера missconfig: 'Http: // Localhost: 8080/ContactList/users' – artemisian

+0

' HTTP Status 404 -/ContactList/пользователи Тип состояния отчет message/ContactList/users описание Запрошенный ресурс недоступен. Apache Tomcat/7.0.70' – Andrew

+0

Вам необходимо исправить это на вашей стороне сервера – artemisian

ответ

0

Вслед за наши оригинальные комментарии вопроса.

Во-первых, пожалуйста, удалите @Path("/") от getDefaultUserInJSON, так как он не нужен.

Во-вторых, это проблема с развертыванием Tomcat. Убедитесь, что в развернутой войне в нем файл WEB-INF/web.xml имеет тот же контент, что и в вашем проекте. Но давайте попробуем это, давайте запустим Tomcat и дадим ему работать. Вам нужно будет установить Maven, если у вас его уже нет.

Ниже приведен минимальный файл pom. Просто скопируйте его:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.wwt</groupId> 
    <artifactId>RestTest</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>RestTest Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.8</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-json</artifactId> 
      <version>1.8</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>RestTest</finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.tomcat.maven</groupId> 
       <artifactId>tomcat7-maven-plugin</artifactId> 
       <version>2.2</version> 
       <configuration> 
        <path>/</path> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Теперь просто откройте терминал на корневой папке проекта и выполнить mvn clean install tomcat7:run. Вы должны иметь возможность ударить без проблем. Url http://localhost:8080/ContactList/users

В вашей pom попробуйте обновить приведенную ниже зависимость (добавьте <scope>provide</scope>) и посмотрите, разрешает ли она это.

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.0.1</version> 
    <scope>provide</scope> 
</dependency> 
+0

Да, у меня все настроено, и maven установлен. – Andrew

+0

См. Выше отредактированную ошибку. Я получаю при запуске 'mvn clean install tomcat7: run' – Andrew

+0

Пожалуйста, разместите свой pom – artemisian