我们在部署报表的时候常常会遇到某些授权问题,现在我们将授权问题汇总一下,并给出对应的解决办法。(不断更新中)
服务器特征码为负
服务器特征码为负值可能出现在两个阶段:
1、 使用获取特征码程序获取的特征码为负值;
2、 访问应用的时候后台报负值错误,服务器特征码-99999476与License文件中授权的特征码38047366不一致!
这两种问题一般都是由于客户使用oracleAS应用服务器,此原因可能是由于获取特征码的程序找不到windows的环境变量windir了。
可以通过如下操作解决:
在报表配置中增加一项 windir 3.5中加在web.xml中的DataServlet的初始参数中,
<init-param>
<param-name>windir</param-name>
<param-value>c:\windows</param-value>
</init-param>
4.0中加在reportConfig.xml中,如下
<config>
<name>windir</name>
<value>c:\windows</value>
</config>
有时配置完上面的选项还是不正常,这时就要试着更新一下report3.5.jar或report4.jar包了。
特征码为正值,但报不匹配错误
诸如这样的错误:服务器特征码68824866和68828198都与LICENSE文件中授权的特征码43923866不一致!
这类问题出现可能由于如下原因导致:
1、 使用直接获取特征码程序获取的有问题,这时候需要用我们提供的jsp获取特征码的程序再获取几次,看看是否都一致,如果都没问题需要将该特征码发给销售重做授权;
2、 服务器环境做过硬件或软件的改变,导致当前特征码与原来获取的特征码不符。这时需要重新获取当前服务器特征码,并将特征码发给销售重做授权;
3、 功能包导致,此时需要更新report4.jar试一下。
报表授权不支持该功能
开发报表的过程中参照教程操作,但最后发现报错或不出现相应的结果。这时除了确认本身制作过程是否有问题外,就要查看一下授权信息了,看看当前授权支不支持该功能。
查看授权信息的具体方法是(4.0以上版本):
点击设计器 菜单栏>>关于>>授权信息>>选择另一个授权,选择后即可进入授权信息查看窗口。这里如果对应的功能为false,那就是该功能不被支持了
关于绑定IP时的授权错误:
问题描述
某客户的集群环境中使用了绑定ip的授权,其中一台59的机器出现问题,提示:服务器IP地址127.0.0.1与License文件中授权的IP地址不符!
集群环境中除59机器,其他正常,客户服务器均为unix系统。
授权信息:IP= 10.48.**.61;10.48.**.59;10.48.**.53;10.48.**.4
问题分析
导致这个问题的原因可能有两方面:
一是授权本身制作有问题,比如ip绑定错误或ip输入不规范。通过查看和客户确认和查看授权信息基本上排除了这两种可能;
二是客户这台59的机器和其他的不同,主要可能硬件如网卡不尽相同。这需要通过程序获取一下本机ip来做测试。
解决方法
我们使用润乾匹配授权时获取ip的方法,在59本机获取一下当前ip。java.net.InetAddress.getLocalHost().getHostAddress(),经反馈得知,结果为127.0.0.1,所以我们确认问题出在客户机上。
让客户进行了如下操作:
查看 /etc/hosts文件,里面有一条本机名和 222.xxx.xxx.xx这个 IP 对应的记录。把它注释掉,然后修改本机的主机名,又在 hosts文件中加入主机名和222. xx.xx.xx的对应,问题解决了。
总结
通过问题的解决方法,我们可以发现InetAddress.getLocalHost().getHostAddress()方法找到本机 IP的实现方法——依靠本机的机器名去查询IP 地址,和 ping `hostname` 返回的 IP地址是同一个,并不是 ipconfig 方法得到的 eth0 IP 地址。
在windows中InetAddress.getLocalHost().getHostAddress()获得的值可能是在/system32/drivers/etc/host文件中的值