Hallo,
ich bin nun wieder dabei meinen Spring REST Webservice zu entwickeln.
Im allgemeinen, es wird eine verteilte Anwendung, die Maven / Soring Rest Anwendung läuft auf einem Tomcat über https erreichbar. Die Client Anwendung läuft auf einem normalen Apache Server unter Port 81.
Die Client Anwendung ist reines HTMl und JQuery.
In der Server Anwendung habe ich einen Testcontroller mit minimalen Daten die eine Action zurück geben soll.
Wenn ich nun den Controller und die Action direkt als URL im Browser aufrufe, dann wird der JSON String im Browser angezeigt.
Wenn ich nun aber einen AJAX Request mit der selben URL drin über die Client Anwendung schicke, dann kommt nichts zurück. Beim debuggen in der Konsole des Firefox steht als Status eine 0, was ich gar nicht nachvollziehen kann.
Ich poste nun mal alle relevanten Sachen.
pom.xml
web.xml
decon-restservice.xml
Der PgebaeudeController.java
Und nun noch die Client index.html
Wenn ich nun im Browser die URL https://localhost/decon-fm-v5/gebaeude/list/ direkt aufrufe, dann bekomme ich im Browser folgende Ausgabe angezeigt.
Beim direkten Browseraufruf wird in der Eclipse Konsole auch folgendes gelistet.
Wenn ich nun im Browser die index vom Client Teil aufrufe, dann passiert nichts, es scheint nichts aufgerufen zu werden, denn da wird selbst in der Eclipse Konsole nichts gelistet.
Könnt ihr mir bitte weiter helfen? Ich habe schon gegoogelt, aber komme nicht auf den Fehler den ich mache.
Vielen Danke für eure Hilfe, ich hoffe ich konnte alle wichtigen Informationen liefern.
Gruß Lit-Web
ich bin nun wieder dabei meinen Spring REST Webservice zu entwickeln.
Im allgemeinen, es wird eine verteilte Anwendung, die Maven / Soring Rest Anwendung läuft auf einem Tomcat über https erreichbar. Die Client Anwendung läuft auf einem normalen Apache Server unter Port 81.
Die Client Anwendung ist reines HTMl und JQuery.
In der Server Anwendung habe ich einen Testcontroller mit minimalen Daten die eine Action zurück geben soll.
Wenn ich nun den Controller und die Action direkt als URL im Browser aufrufe, dann wird der JSON String im Browser angezeigt.
Wenn ich nun aber einen AJAX Request mit der selben URL drin über die Client Anwendung schicke, dann kommt nichts zurück. Beim debuggen in der Konsole des Firefox steht als Status eine 0, was ich gar nicht nachvollziehen kann.
Ich poste nun mal alle relevanten Sachen.
pom.xml
Code:
<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>
<inceptionYear>2014</inceptionYear>
<groupId>deconFmV5</groupId>
<artifactId>decon-fm-v5</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
<name>decon-fm-v5</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
</dependency>
</dependencies>
<build>
<finalName>decon-fm-v5</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>decon-fm-v5</warName>
</configuration>
</plugin>
</plugins>
</build>
</project>
web.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >-->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID"
version="2.5">
<display-name>Decon FM V5</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/decon-restservice.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>deconWebservice</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>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>deconWebservice</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
decon-restservice.xml
Code:
<?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:oxm="http://www.springframework.org/schema/oxm"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<mvc:annotation-driven/>
<context:component-scan base-package="de.decon.fm.webservices"></context:component-scan>
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<property name="contentType" value="text/plain"/>
</bean>
</beans>
Der PgebaeudeController.java
Code:
package de.decon.fm.webservices;
import java.io.IOException;
import java.util.HashMap;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/gebaeude")
public class PgebaeudeController
{
@RequestMapping(value = "/list/", method = RequestMethod.GET, produces = {"application/json"})
public @ResponseBody String getData()
{
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("id", 12);
data.put("name", "Testgebäude");
data.put("nr", "233");
String json = "";
ObjectMapper map = new ObjectMapper();
try {
json = map.writeValueAsString(data);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// System.out.println(json);
return json;
}
}
Und nun noch die Client index.html
Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<script type="text/javascript" src="./library/externals/jquery/jquery_1.10.2_dev.js"></script>
<script type="text/javascript">var jQuery_1_10_2 = $.noConflict(true);</script>
<script type="text/javascript">
jQuery_1_10_2(document).ready(function($) {
var res = null;
$.ajax({
url : "https://localhost/decon-fm-v5/gebaeude/list/",
type : "GET",
dataType : "JSON",
contentType : "application/json; charset=utf-8",
data : JSON.stringify({
id : "12",
test : "test"
}),
success : function(data) {
var result = JSON.parse(JSON.stringify(data));
res = result;
},
error : function(jqXHR, exception) {
console.log(jqXHR.status);
},
async : false
});
console.log(res);
});
</script>
<title>Insert title here</title>
</head>
<body>
</body>
</html>
Wenn ich nun im Browser die URL https://localhost/decon-fm-v5/gebaeude/list/ direkt aufrufe, dann bekomme ich im Browser folgende Ausgabe angezeigt.
Code:
{"id":12,"nr":"233","name":"Testgebäude"}
Beim direkten Browseraufruf wird in der Eclipse Konsole auch folgendes gelistet.
Code:
DEBUG: [Feb-18 09:05:03,994] web.servlet.DispatcherServlet - DispatcherServlet with name 'deconWebservice' processing GET request for [/decon-fm-v5/gebaeude/list/]
DEBUG: [Feb-18 09:05:03,994] method.annotation.RequestMappingHandlerMapping - Looking up handler method for path /gebaeude/list/
DEBUG: [Feb-18 09:05:03,995] method.annotation.RequestMappingHandlerMapping - Returning handler method [public java.lang.String de.decon.fm.webservices.PgebaeudeController.getData()]
DEBUG: [Feb-18 09:05:03,995] web.servlet.DispatcherServlet - Last-Modified value for [/decon-fm-v5/gebaeude/list/] is: -1
DEBUG: [Feb-18 09:05:03,998] method.annotation.RequestResponseBodyMethodProcessor - Written [{"id":12,"nr":"233","name":"Testgebäude"}] as "application/json" using [org.springframework.http.converter.StringHttpMessageConverter@19862c5b]
DEBUG: [Feb-18 09:05:03,998] web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'deconWebservice': assuming HandlerAdapter completed request handling
DEBUG: [Feb-18 09:05:03,998] web.servlet.DispatcherServlet - Successfully completed request
Wenn ich nun im Browser die index vom Client Teil aufrufe, dann passiert nichts, es scheint nichts aufgerufen zu werden, denn da wird selbst in der Eclipse Konsole nichts gelistet.
Könnt ihr mir bitte weiter helfen? Ich habe schon gegoogelt, aber komme nicht auf den Fehler den ich mache.
Vielen Danke für eure Hilfe, ich hoffe ich konnte alle wichtigen Informationen liefern.
Gruß Lit-Web
Zuletzt bearbeitet: