从 ReactJS 客户端调用时,Java Web 服务无法加载

标签 java reactjs web-services

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

错误:

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>

最佳答案

需要绑定(bind)的是 function(data){},而不是 then()

像这样重写你的代码,你应该没问题:

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

关于从 ReactJS 客户端调用时,Java Web 服务无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706645/

相关文章:

java - 如何检查字节数组是否是有效的 UTF-8 字符串

java - 我如何处理使用 Jaxb 解析的 xml 文件而不是从根元素解析

javascript - “React”在全局范围内不起作用

reactjs - 如何使用 Jest 和 React-testing-library 测试 useRef?

c# - 使用 WCF 的在线多人游戏

web-services - 在 Web 服务中,端点和远程网关有什么区别

java - 将方法存储在变量中时出错

java - Poi如何在更改样式后更改单元格类型

javascript - 在 react 中处理子组件的提交和更改

java - 基于使用 wsdl2java 创建的 stub 将客户端证书附加到 Web 服务调用