2017-10-12 86 views
1

我已经在Java中创建了一个Web服务,并且我已经将它部署在Tomcat Apache(版本8.5)上。此外,我在ReactJS中编写了一个简单的客户端,它连接到我的Web服务并显示响应。但是当我运行我的客户端时出现错误。请告诉可能是什么问题?Java web服务在从ReactJS客户端调用时无法加载

错误:

enter image description here

MyServer.java

package com.tutorialspoint; 

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.URL; 
import java.net.URLConnection; 

import javax.ws.rs.Consumes; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

import org.json.JSONObject; 


@Path("myService") 
public class MyServer { 

    @GET 
    @Path("/data") 
    @Consumes(MediaType.APPLICATION_JSON) 

    public Response queryRESTService(InputStream incomingData) { 

     JSONObject jsonObject = null; 
     try { 
      String output = ""; 
      InputStream inputStream = new FileInputStream("C:\\Users\\username\\myJSON.txt"); 
      InputStreamReader inputReader = new InputStreamReader(inputStream); 
      BufferedReader bufferedReader = new BufferedReader(inputReader); 
      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       output += line + "\n"; 
      } 
      jsonObject = new JSONObject(output); 
      bufferedReader.close(); 
     } 
     catch (Exception e) { 
     } 
     return Response.status(200).entity(jsonObject.toString()).build(); 
    } 

    @GET 
    @Path("/verify") 
    @Produces(MediaType.TEXT_PLAIN) 
    public Response verifyRESTService() { 
     String result = "MyRESTService Successfully started.."; 
     return Response.status(200).entity(result).build(); 
    } 

} 

的web.xml

<?xml version = "1.0" encoding = "UTF-8"?> 
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
    xmlns = "http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id = "WebApp_ID" version = "3.0"> 
    <display-name>User Management</display-name> 
    <servlet> 
     <servlet-name>Jersey RESTful Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.tutorialspoint</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey RESTful Application</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Client.html

<!DOCTYPE html> 
<html> 
    <head> 
     <title>React Flux</title> 
     <script src="https:/fb.me/react-0.13.3.js"></script> 
     <script src="https:/fb.me/JSXTransformer-0.13.3.js"></script> 
     <script src="http:/code.jquery.com/jquery-2.1.4.min.js"></script> 
    </head> 
    <body> 
     <div id="component"></div> 

     <script type="text/jsx"> 
      var JavaEEWSTest = React.createClass({ 
       getInitialState: function() { 
        return {text: ''}; 
       }, 
       componentDidMount: function(){ 
        $.ajax({ 
         url: "localhost:8080/UserManagement/rest/myService/data" 
        }).then(function(data) { 
         this.setState({text: data}); 
        }).bind(this) 
       }, 
       render: function() { 
        return <div>Response - {this.state.text}</div>; 
       } 
      }); 

      React.render(<JavaEEWSTest />, document.getElementById('component')); 

     </script> 
    </body> 
</html> 
+0

不绑定在componentDidMount Ajax调用。 –

回答

0

这是一个需要绑定的function(data){},没有then()

重写你这样的代码,你应该罚款:

componentDidMount: function(){ 
    $.ajax({ 
    url: "localhost:8080/UserManagement/rest/myService/data" 
    }).then((function(data) { 
    this.setState({text: data}); 
    }).bind(this)) 
},