今天花了一中午和一下午的时间,终于解决了从端口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了!
从8080到8008
最新推荐文章于 2022-01-27 14:15:34 发布