打印

WODM样本服务器示例miniloan-server报错JsonParsingException之解

WODM样本服务器示例miniloan-server报错JsonParsingException之解

WODM样本服务器示例miniloan-server报错JsonParsingException之解

页面报的错误信息如下:

应用程序类“org.glassfish.json.JsonTokenizer.expectedChar:538”抛出异常
复制内容到剪贴板
代码:
javax.json.stream.JsonParsingException: Unexpected char 97 at (line no=1, column no=2, offset=1), expecting 'u'

at org.glassfish.json.JsonTokenizer.expectedChar(JsonTokenizer.java:538)
at [internal classes]
at com.ibm.odm.samples.Validate.doPost(Validate.java:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
at [internal classes]
后台服务的具体错误信息为
复制内容到剪贴板
代码:
Stack Dump = javax.json.stream.JsonParsingException: Unexpected char 97 at (line no=1, column no=2, offset=1), expecting 'u'
        at org.glassfish.json.JsonTokenizer.expectedChar(JsonTokenizer.java:538)
        at org.glassfish.json.JsonTokenizer.readNull(JsonTokenizer.java:336)
        at org.glassfish.json.JsonTokenizer.nextToken(JsonTokenizer.java:393)
        at org.glassfish.json.JsonParserImpl$NoneContext.getNextEvent(JsonParserImpl.java:222)
        at org.glassfish.json.JsonParserImpl$StateIterator.next(JsonParserImpl.java:172)
        at org.glassfish.json.JsonParserImpl.next(JsonParserImpl.java:149)
        at org.glassfish.json.JsonReaderImpl.readObject(JsonReaderImpl.java:101)
        at com.ibm.odm.samples.Validate.doPost(Validate.java:84)
从miniloan-server.war\WEB-INF\classes查找并增加日志进行检查
复制内容到剪贴板
代码:
                JsonReader jsonReader = Json.createReader(request.getInputStream());//83
                JsonObject json = jsonReader.readObject();//84
说明是request过来的请求可能有问题,缺少内容。

通过IE 查看,F12 开发人员工具,“控制台”,可以看到如下错误
SCRIPT5009: “$”未定义
文件: main.js,行: 11,列: 1

导致发送的内容仅为:
复制内容到剪贴板
代码:
name=Joe&yearly-income=80000&credit-score=600&amount=500000&duration=240&yearly-interest-rate=0.05
于是无法正确按json格式来进行解析而报错

开始追踪文件来源,“网络”,可以看到如下三个URL的请求的“结果”是中止的状态,原因肯定是上不了这些网站
复制内容到剪贴板
代码:
http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css
https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js
http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js
分析引用的页面为index.html,将其中的引用关系改为
复制内容到剪贴板
代码:
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <script src="js/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
并通过梯子下载这三个文件放入js目录下和css目录下
打包,替换 C:\IBM\wlp\usr\servers\odm8910\apps 目录下的 miniloan-server.war 文件
再次启动样本服务器

仍发现 bootstrap.min.css 中仍有引用../fonts/ 字体等需要再下载,放入 fonts目录,再打包,这样就完整了

这样,发送正确的内容为
复制内容到剪贴板
代码:
{"name":"Joe","yearly-income":80000,"credit-score":600,"amount":5000000,"duration":240,"yearly-interest-rate":0.05,"use-odm":false}
问题完整解决,不是代码与系统的问题,仅是网络问题

完整的下载包地址为 : 下载

将下载后的 miniloan-server.zip 改名为 miniloan-server.zip 文件

  • 在没有启动样本服务器时替换掉 C:\IBM\ODM891\gettingstarted\applicationserver 目录下的文件即可
  • 已启动了样本服务器后的,要替 C:\IBM\wlp\usr\servers\odm8910\apps 目录下的 miniloan-server.war 文件


可以同时都覆盖之!

[ 本帖最后由 YuLimin 于 2017-12-24 20:32 编辑 ]
简单就是美!
我的Java:http://www.Java2Class.net

TOP