2017-03-02 3 views
0

Ich habe eine Klasse wieFrühling @ExceptionHandler doesnt Griff Fehler

@RestController 
public class CustomerRestController { 

    @Autowired 
    private CustomerManagementService customerManagementService; 

    /** 
    * 
    * @return 
    */ 
    @ExceptionHandler(CustomerNotFoundException.class) 
    public ResponseEntity<ClinetErrorInformation> rulesForCustomerNotFound() { 

     ClinetErrorInformation clinetErrorInformation = new ClinetErrorInformation("Clinet was not found"); 
     return new ResponseEntity<>(clinetErrorInformation, HttpStatus.NOT_FOUND); 
    } 

    @RequestMapping(value = {"/customer/{id}"}) 
    public Customer requestCustomerById(@PathVariable String id) throws CustomerNotFoundException { 
     return customerManagementService.findCustomerById(id); 
    } 

} 

Die Ausnahme von der Klasse nicht behandelt wird:

Schwere: com.mycompany.crmproject.services.customer.CustomerNotFoundException bei ... com.mycompany.crmproject.restcontroller.CustomerRestController.requestCustomerById (CustomerRestController.java:44)

Dispatcher Servlet:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 

     xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans.xsd 
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
         http://www.springframework.org/schema/mvc 
         http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 


    <context:component-scan base-package="com.mycompany.crmproject.restcontroller"/> 


    <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/> 

    <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> 
     <property name="favorPathExtension" value="false"/> 

     <property name="favorParameter" value="true"/> 

     <property name="parameterName" value="mediaType"/> 

     <property name="mediaTypes"> 
      <map> 
       <entry key="json" value="application/json"></entry> 
       <entry key="xml" value="application/xml"></entry>    
      </map> 
     </property> 

     <property name="ignoreAcceptHeader" value="false"/> 

    </bean> 

</beans> 

Was vielleicht der Grund, warum dieser Fehler nicht behandelt wird und in der Browesr kann ich nur leere Seite sehen.

Http Antwort

Status Code: 200 OK 
Content-Length: 0 
Date: Thu, 02 Mar 2017 14:09:52 GMT 
Server: GlassFish Server Open Source Edition 4.1.1 
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.1.1 Java/Oracle Corporation/1.8) 

Pom

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany</groupId> 
    <artifactId>CRMProject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
    <name>CRMProject</name> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
      <version>1.0.0.Draft-16</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.derby</groupId> 
      <artifactId>derby</artifactId> 
      <version>10.13.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.derby</groupId> 
      <artifactId>derbyclient</artifactId> 
      <version>10.13.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.persistence</groupId> 
      <artifactId>javax.persistence</artifactId> 
      <version>2.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.8.10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjtools</artifactId> 
      <version>1.8.10</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.6.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.6.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency>   
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-websocket</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-messaging</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-oxm</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-instrument</artifactId> 
      <version>4.3.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>aopalliance</groupId> 
      <artifactId>aopalliance</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.3.6.RELEASE</version> 
     </dependency> 
    </dependencies> 
</project> 
+1

Sie Konfiguration sieht gut aus, ich kann Ihr Problem in Tomcat nicht reproduzieren. Kannst du deinen Pom zeigen? Können Sie versuchen, einen anderen Webcontainer zu verwenden? – artemisian

+0

@artemisian Ich habe pom – pshemek

Antwort

0

Sind Sie sicher, dass die Ausnahme ausgelöst wird? Sieht so aus, als ob der Service null zurückgibt und das sieht man.

+0

Ja, ich bin: Schwerwiegend: com.mycompany.crmproject.services.customer.CustomerNotFoundException at ... com.meinefirma.crmproject.restcontroller.CustomerRestController.requestCustomerById (CustomerRestController.java:44) – pshemek

+0

Dies ist nur Protokollnachricht, könnte es Sei das die Ausnahme protokolliert und geschluckt? –

+0

Ausnahme wurde von AOP-Proxy, Thx für Hilfe behandelt – pshemek

0

hinzufügen @ResponseBody zu Ihrer Methode Exception-Handler. Mit @RestController verwenden nur die @RequestMapping Methoden standardmäßig .


Vielleicht haben Sie einen anderen Ausnahme Resolver registriert. Ändern Sie die Priorität für ExceptionHandlerExceptionResolver.

Wenn Sie Annotation-Konfiguration verwenden:

@Bean 
public ExceptionHandlerExceptionResolver exceptionHandlerExceptionResolver()   
{ 
    ExceptionHandlerExceptionResolver exceptionHandlerExceptionResolver = new ExceptionHandlerExceptionResolver(); 
    exceptionHandlerExceptionResolver.setOrder(1); 
    return exceptionHandlerExceptionResolver; 
} 

Wenn Sie XML-Konfiguration verwenden:

<bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver"> 
    <property name="order" value="1"/> 
</bean> 
+0

hinzugefügt ResponseBody Annotation, aber es hat keinen Unterschied gemacht. – pshemek

+0

@pshemek Ich habe meine Antwort aktualisiert. – alfcope

Verwandte Themen