Java堂  


Subversion和Apache的安装使用指南

Filed under: JavaPlateform,Web&Server — Jet @ 5:21 上午
原文出处: Subversion和Apache的安装使用指南
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

虽然Subversion(SVN)直接可以注册为服务程序,但是最方便的还是使用SVN+Apache的方式,因为可以无防火墙限制、方便直接使用浏览器对代码进行浏览等等。下面我就将自己在Windows下安装Subversion(SVN)和Apache的方法记录一下:

1. 从Apache网站上下载Apache的安装包进行安装,这个过程比较简单。需要注意Apache的版本,本文采用2.2,当然也可以使用2.0版本。假定Apache的安装目录为D:\apache2。

2. http://subversion.tigris.org/官方下载Subversion的Windows下面与Apache的配合版本,这里需要注意Apache的版本,2.0和2.2的是不一样的,不要下载错了。

PS:最新的下载地址更新为:http://alagazam.net/,并且都是基于Apache2.2的,不在提供2.0版本的支持。

然后将下载下来的zip包解压缩到一个目录,比如D:\svn-win32-1.6.6。

3. 将svn安装目录的bin目录下面的mod_authz_svn.so和mod_dav_svn.so两个文件拷贝到Apache安装目录的modules目录下面,然后修改Apache的配置文件httpd.conf,将下面两行的注释去掉:

LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so

同时在下面增加两行:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

4. 接下来就是对SVN进行配置了,配置文件(包含每条的含义)如下:

# 表示访问SVN的地址,形式为http:///svn
<Location /svn>
# 告诉Apache哪个模块负责服务像那样的URL--在这里就是Subversion模块
DAV svn
# 在Subversion 1.3及更高版本中,这个指示器使得Subversion列出由SVNParentPath指定的目录下所有的版本库
SVNListParentPath on
# 下面制定SVN仓库的位置,有两种选择:
# (1) 单库:一个Apache下面只有一个SVN仓库,这样的话就使用SVNPath来指定唯一的仓库位置,访问仓库的方式是http:///svn
# (2) 多库:一个Apache下面可以有多个SVN仓库,这样的话就使用SVNParentPath来指定所有仓库所在的主目录,访问仓库的方式是http:///svn/仓库1、http:///svn/仓库2等等
SVNPath “D:\Data\SVNData\repository”
#SVNParentPath “D:\Data\SVNData\repository”

# 当一个验证对话框弹出时,告诉用户这个验证是用来做什么的
AuthName “Subversion repositories”
# 启用基本的验证,比如用户名/密码对,通常来做这样做就已经足够了。
AuthType Basic
# 指定密码文件的位置,密码文件中存放了用来验证用户的用户名和密码信息。这个文件的生成方式在后续步骤中会介绍
AuthUserFile “D:\Data\SVNData\config\passwd”
# 对版本库和人员进行权限分配,后面会进行详细的设置和介绍。
AuthzSVNAccessFile “D:\Data\SVNData\config\svnaccessfile”

# 限定用户只有输入正确的用户名及密码后才能访问这个路径
Require valid-user
# 如果想匿名读取的话使用下面的方式
#<LimitExcept GET PROPFIND OPTIONS REPORT>
#Require valid-user
#</LimitExcept>
</Location>

5. 接下来使用Apache中的htpasswd.exe命令来生成密码文件,也就是上面AuthUserFile 设置项所指向的文件,切换到Apache安装目录的bin目录下,指向下面的命令:

# 后面的参数c表示新建文件,在第一次执行的时候使用
htpasswd -c D:\Data\SVNData\config\passwd <username>
# 如果是追加新用户或修改原有用户密码,命令后面不加参数c
htpasswd D:\Data\SVNData\config\passwd <username>

每次执行命令之后会提示输入两遍密码

6. 这个时候如果重启Apache的话会出现一个错误提示,这个是因为svn所使用的一些dll文件apache还无法获取,解决的方法可以将svn安装目录的bin目录下面的dll文件拷贝到系统的system32目录下面,但最好的方式是将bin目录加入到path环境变量中。

7. 这个时候如果访问http:///svn的话,应该会出现一个登录框,输入用户名/密码之后就可以看到SVN仓库的内容了。不过常见下面的几个错误:
(1) 出现“403 Forbidden”错误
出现这个错误的原因有很多种,比如Apache2.2相对于之前的版本来说增强了安全性,默认情况下目录是禁止访问的,将“<Directory />”修改如下:

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

如果这样还不行的话那就是“多库还是单库”的问题了。上面讲过,在对SVN进行配置的时候,使用SVNParentPath设置所有库的根目录,在根目录下面存放多个SVN的库,那这样的话直接访问父目录是没有权限的,只能通过http:///svn/project1来访问对应的项目仓库;如果使用SVNPath设置为单库的话则不会出现这个错误了。

(2) 出现“<m:human-readable errcode=”720003″>Could not open the requested SVN filesystem</m:human-readable>”错误
出现这个错误是告诉你你所指定的SVN仓库的位置并不是一个合法的SVN仓库,解决的方法是首先创建一个空目录,然后使用“svnadmin create”命令来创建SVN库:

# 首先进入 D:\Data\SVNData\repository 目录下
md project1
svnadmin create D:\Data\SVNData\repository\project1

8. 最后安装SVN客户端就可以访问啦,Eclipse集成的客户端推荐使用Subclipse,Visual Studio集成的客户端推荐使用ankhsvn,系统集成的客户端推荐使用TortoiseSVN

更新by 3/27/2012
如果操作系统为64位的话,因为没有提供基于64为的Subversion Server(包括VisualSVN都只有32位版本),所以无法使用64位的Apache,只能使用32位的Apache程序配合上面的SVN Server使用。

参考资料:
[翻译] windows安装基于Apache的SVN服务器(包括SSL配置)
基于svnserve的服务器,权限文件authz配置的常见问题及解答
Forbidden access or bad repository ?
Subversion for Windows 安裝指南

在Eclipse WTP中加入Resin server adapter

Filed under: JavaPlateform — Jet @ 6:01 上午
原文出处: 在Eclipse WTP中加入Resin server adapter
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

目前Eclipse的WTP用来开发JavaEE的功能越来越强大了,再配合上Maven和Ant,完全可以将MyEclipse丢到垃圾桶了。但是在使用WTP进行Server配置的时候发现竟然不支持Resin,后来Google了一下,找到两个解决的方法:
1. Amateras 这个是一个日本人写的Eclipse插件,可以绑定Resin到WTP中,不过他支持的Eclipse和Resin的版本都比较低,而且好久都没有更新了,不推荐使用。

2. The Resin Eclipse plugin 这个是在Resin的官方WIKI上发现的一个Eclipse插件,比较稳定也比较活跃,是Resin官方推荐使用的插件,Eclipse Update地址是:http://caucho.com/eclipse,安装之后就会在Server Adapter里面出现Resin Server了。

参考资料:
IDE-CauchoWiki
WTP扩展(1):增加Resin Server Runtime Environments

Windows下手动安装JRE和Tomcat出现的错误

Filed under: JavaPlateform — Jet @ 5:39 上午
Tags:
原文出处: Windows下手动安装JRE和Tomcat出现的错误
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

我通常不喜欢在系统中使用安装程序来安装JDK,而是直接做一个拷贝,然后指定JAVA_HOME和CLASSPATH环境变量。另外Tomcat的安装我也是喜欢下载zip包的形式,然后解压缩到一个目录下面,启动的时候直接运行bin/startup.bat就可以了。

可是使用bin/service.bat 将Tomcat安装成Windows Service(Windows服务)程序的时候会出现“[Tomcat]Failed creating java ….\jvm.dll”的提示,后来Google了一下,原来是JRE的bin目录下有一个msvcr71.dll文件在启动的时候需要依赖,所以可以将这个文件拷贝到%SystemRoot%\system32下面,也可以拷贝到Tomcat的bin目录下面,当然你可以将%JRE_HOME%\bin加入到path环境变量中,总之要让系统或Tomcat找到这个dll文件。这里比较推荐的方式是使用最后一种,毕竟有可能不仅仅是Tomcat会使用到这个dll文件,也不一定只会用到这一个dll文件。 :)

参考资料:[Tomcat]Failed creating java D:\jre6\bin\client\jvm.dll的解决

分享几句话

Filed under: Life — Jet @ 8:22 上午
Tags:
原文出处: 分享几句话
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

好久没有更新文章了,是在对不住一直关注我的朋友了。

先给大家一起分享几句话,请好好体会一下。

The world needs dreamers and the world needs doers. But above all, the world needs dreamers who do. -Sarah Ban Breathnach

文武争驰,君臣无事,可以尽豫游之乐,可以养松乔之寿,鸣琴垂拱,不言而化。何必劳神苦思,代下司职,役聪明之耳目,亏无为之大道哉?-魏征《谏太宗十思疏》

穷人缺什么?表面缺金钱,本质缺野心,脑袋缺观念,机会缺了解。命运缺选择,骨子缺勇气!

生活的确是黑暗的,除非有了渴望;所有渴望都是盲目的,除非有了知识; 一切知识都是徒然的,除非有了工作; 所有工作都是空虚的,除非有了爱;当你们带着爱工作时,你们就与自己、与他人、与上帝合为一体。—[黎巴嫩]纪伯伦

使用Jacob时出现的另一个UnsatisfiedLinkError错误:jacob.dll already loaded in another classloader

Filed under: JavaPlateform — Jet @ 12:00 上午
Tags:
原文出处: 使用Jacob时出现的另一个UnsatisfiedLinkError错误:jacob.dll already loaded in another classloader
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

之前文章中已经说过Jacob在windows2003环境下使用的时候会出现UnsatisfiedLinkError错误,解决的方法是需要下载Redistributable Package安装即可。

但如果在JavaEE项目中使用Jacob的时候还会出现另外一个UnsatisfiedLinkError错误:jacob.dll already loaded in another classloader,错误往往会出现在Web容器重启之后。后来查到下面的相关资料:

Java API表明:JVM只允许一个默认的ClassLoader来load native library,同时并不提供专门的API来unload一个loaded native library,因此无法在我们的重启Web应用的代码中来手工清除已经load的jacob。

原因找到了,这是因为在重启Web容器的时候并不会自动结束上一次对dll的加载,解决问题的关键在于重启Web程序之后要确保不要再次加载jacob.jar包,有一个方法就是不要将jacob.jar包放在web程序中,而是将jacob.jar包放在Web容积自身的lib目录下面就可以了。

参考资料:
jacob.dll already loaded in another classloader

卸载冰盾防火墙造成网卡不能使用的问题

Filed under: OS — Jet @ 8:32 上午
Tags: ,
原文出处: 卸载冰盾防火墙造成网卡不能使用的问题
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

前段时间服务器上按照冰盾防火墙,在软件到期之后卸载了,等到重启服务器之后发现系统中网卡“消失”了。驱动没有了,重新安装网卡驱动没有效果,卸载掉网卡驱动再安装也没用,甚至在BOIS中将网卡屏蔽掉然后再启动依然不行。就这样来回折腾了三四个小时都是不能找到网卡,最后只能决定重新安装一下系统。

因为在机房中进行操作,所以如果安装系统的话很多软件需要重新配置,非常麻烦。后来想到在卸载冰盾防火墙出现提示重启的时候我选择的否,然后我为了减少重启的次数又对“本地连接”中的TCP/IP属性进行了一些修改,最后才重启的,会不会是因为这个原因造成的?

于是我又重新安装了一遍冰盾防火墙,重启之后久违的“本地连接”出现了,网络连接也正常了。这个时候再卸载冰盾防火墙,完成后直接重启服务器就没有之前的问题了。后来我又在本地一台服务器上面做了一个实验,就是再执行完冰盾卸载程序之后不立即重启,然后对“本地连接”中的TCP/IP属性进行操作之后再重启,依然发现“本地连接”消失了,看来这是冰盾防火墙卸载程序的一个重大bug。

解决的方法就是重新安装冰盾防火墙,然后执行完卸载重新之后立即重启就可以了。

一个VPN拨号之后不能上网的问题

Filed under: OS,Web&Server — Jet @ 1:41 上午
Tags:
原文出处: 一个VPN拨号之后不能上网的问题
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

最近在服务器端使用路由器做了一个VPN服务,然后将远程登录等操作放在VPN中进行,增加了安全性。但是在公司里面使用VPN拨号上去之后发现不能浏览任何网站,于是对出现的问题进行了小结:
1) 拨号上去不能浏览网页,但是MSN和QQ可以使用;
2) 在家里使用ADSL环境下没有任何问题,但是在单位的局域网环境下有这个问题。

通过上面的现象可以分析出应该是因为DNS服务器的问题造成的,将网卡上面的DNS服务器强制设置成当地的DNS服务器还是不行。后来使用route print命令查看了一下路由表,发现是因为VPN拨号上去之后本地的默认网关已经放到VPN服务器上面了,必须还转移到本地才可以。于是使用route delete删除远程网关,然后使用route add将网关指向本地,这样就可以了。

但是后来想到总不能在公司里的每台机器都要这样设置吧?而且为什么ADSL环境下没有这个问题呢?在想这个问题的时候我无意间看到了本地局域网的IP地址为10.44.xxx.xxx,而VPN拨号上去分配的地址为10.240.xxx.xxx,于是想到会不会是因为二者都使用的是A类地址的原因呢?后来在VPN服务器上面将分配的地址修改为B类,再重新拨号连接,问题消失了。

附局域网可用的IP地址范围:

A类地址10.0.0.0 – 10.255.255.255
B类网172.16.0.0 – 172.31.255.255
C类网192.168.0.0 -192.168.255.255

参考资料:
教你解决公司VPN不能上网的故障(图)
局域网IP

在VC++ 2005中编写SAPI程序

Filed under: C++Plateform — Jet @ 7:42 上午
Tags: ,
原文出处: 在VC++ 2005中编写SAPI程序
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

相对于经典的VC6而言,2005提供了很多实用的功能,比如语法着色、自动提示等等,所以逐渐将很多的项目转移到2005中进行开发了。最近在做一个SAPI开发的小程序,虽然在VC6中顺利编译成功了,但是在转移到2005的过程中遇到了一些问题,现在逐一记录下来。

1. 设置SAPI库文件
首先需要安装Microsoft Speech SDK5.1(微软官方下载页面现在失效了,可以直接下载或者到华军网站上下载),然后需要引用SAPI的头文件和类库,否则编译的时候提示找不到头文件或库文件。在VS2005分别打开“工具”-“选项”菜单,在左边分别选择“项目和解决方案”-“VC++ 目录”,然后在右边的“显示以下内容的目录”下拉框中选择“包含文件”,将“C:\Program Files\Microsoft Speech SDK 5.1\Include”目录(无引号)加入其中;再选中“库文件”,将“C:\Program Files\Microsoft Speech SDK 5.1\Lib\i386”加入其中。
VC2005选项

2. 发布程序
在VS2005的工具栏中调试选项有两种,一种是debug,一种是release。VC2005调试选项 通常来说,我们发布程序的时候会选择release选项。另外,对于一些旧的系统需要安装vs2005的运行环境,也就是所谓的Redistributable Package,注意有的时候安装完成之后需要重启一下电脑。

这点我就犯了一个错误,我将debug编译后的程序放到一个新的环境中总是提示初始化错误,即使安装完运行环境之后还是如此,后来将release之后的程序替换一下就可以了。

参考资料:
Using Events with TTS

Jacob出现UnsatisfiedLinkError错误的解决方法

Filed under: JavaPlateform — Jet @ 5:13 上午
Tags:
原文出处: Jacob出现UnsatisfiedLinkError错误的解决方法
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

Jacob是一个非常常用的用于在Java中连接COM组件的包,它底层使用JNI进行实现,简化了直接使用JNI调用COM组件的繁琐过程。

但是最新的Jacob在Windows 2003系统下使用的时候总是出现UnsatisfiedLinkError的提示,而在XP系统下使用正常。后来在Jacob官方论坛上面查到了解决方法,原来Jacob从1.13之后使用的开发工具是VC++ 2005,如果在旧的系统下运行程序出现UnsatisfiedLinkError错误的时候是因为系统中没有安装Redistributable Package,只要到微软的官方网站上下载这个文件安装之后就可以正常使用了。

参考资料:
can’t run jacob in win server 2003

IE6中出现“无法设置selected属性”的bug及解决方法

Filed under: Web&Server — Jet @ 6:07 下午
原文出处: IE6中出现“无法设置selected属性”的bug及解决方法
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

如果在IE6中设置select控件的selected属性的时候,会提示“无法设置selected属性。未指明的错误。”比如执行如下代码:

  1. var selectObj = document.getElementById('selectId');
  2. // 执行下面语句之后出错
  3. selectObj.options[1].selected = true;

后来查了一下资料,发现这个错误在IE5.5、7及Firefox等浏览器下面没有问题,唯独IE6下有如下的提示。后来有人找到了一个解决的方法,就是设置selected属性的时候使用setTimeout函数设定一个时间即可,代码如下:

  1. var selectObj = document.getElementById('selectId');
  2. // 使用setTimeout之后问题解决
  3. setTimeout(function() {
  4.     selectObj.options[1].selected = true;
  5. }, 1);

参考资料:
急!请教高手:利用xml的selected问题!

« 上一页下一页 »