从8080到8008

今天花了一中午和一下午的时间,终于解决了从端口8080到8008的转移,把这个过程写出来,总结一下。

问题阐述:
在JBuilder2005环境下,利用javabean实现数据查询、显示,所用的数据库是postgres,连接服务器是tomcat,默认是8080端口。这部分功能是整个网站的一个部分,网站的所有网页都是在mapguide的www下进行发布的,而mapguide的默认端口是8008,就需要把在JBuilder2005下写好的网页移到mapguide的www目录下,实现统一发布。

需要解决:
由于应用javabean,就需要把.class文件移到相应目录下,在JBuilder中建立WebModule,在其下建立jsp文件,建立javabean等,各文件夹的位置都是规定好的,基本不会出现找不到的情况。那么在mapguide中,.class文件要放在哪里呢?
 
解决结果:
经过多方查找,终于在mapguide的安装目录中找到了类似JBuilder中放置.class文件的classes文件夹:C:/Program Files/MapGuideOpenSource/WebServerExtensions/Tomcat/server,这个是我机子上的路径,如果你也有类似的问题,请找到你自己机子的路径。在mapguide中.class和应用这个bean的代码是分开存放的,代码都放在/WebServerExtensions/www目录下,和JBuilder是不一样的。

又出问题:
到这里其实端口问题,或者说文件的路径修改问题已经解决,又出现了新的问题。由于我的数据库是postgres,所以在JBuilder环境下,就用了postgres提供的Java user guide的程序连接数据库,代码如下:
        dbDriver = "org.postgresql.Driver";
        dbURL = "jdbc:postgresql://200.0.0.21:5432/postgres";
        dbUserName = "postgres"; 
        dbPassWord = "postgres";
奇怪的是似乎mapguide的服务器不能识别"org.postgresql.Driver",就不能连接数据库,为了证明不是其他方面的问题,我就用jdbc:odbc在sqlserver中试验了一下,代码如下:
       dbDriver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
       dbURL = "jdbc:odbc:sqlserver"; 
       dbUserName = "sa";
       dbPassWord = "sa";
这里的sqlserver是在控制面板->管理工具->数据源->用户数据源中增加的针对sqlserver数据库的数据源的名称,具体添加方法就不写了,挺简单的。用这段代码在mapguide中可以顺利查出数据。看来,postgres提供的针对java的驱动还是有局限性的,jdbc:odbc比较通用。后来我又添加了针对postgres数据库的数据源postgres,名字可以随便起的。修改代码如下:
       dbDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
       dbURL = "jdbc:odbc:postgres";
       dbUserName = " postgres ";
       dbPassWord = " postgres ";
这样就解决了对postgres数据库的连接访问。

数据问题:
搞定之后,又出问题了。虽然郁闷,不过也要解决。存储在postgres数据库中的浮点数据的类型为float8,用"org.postgresql.Driver"为驱动时,因为是自身提供的,所以数据读出来之后小数点后面是几位就是几位,而用"sun.jdbc.odbc.JdbcOdbcDriver"为驱动时,大概是为了通用性,浮点类数据均在其后增加了很多0,还有最后一位不确定的数字,读出来的字符串就很长,而且不准确。只好在javabean中又加入函数来控制数据精度,代码如下:
        //如果用jdbc:odbc方式来实现,数据的精度需要控制
          public String controlFloat(String longstr) {
                 String shortstr="";
                 int i = longstr.indexOf('.');
                 if(i >= 0) {
                         shortstr = longstr.substring(0, i+2);
                   }
                 else shortstr=longstr;
                  return shortstr;
              }
这样就把浮点数据精度控制在保留小数点后1位。至此,才把这次转移引发的问题解决干净。写出来看看,发现挺简单,不过思考、调试、找寻、修改、再调试却花了不少时间,好在OK了! 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值