在FreeBSD上建立Tomcat的JSP环境是非常容易的,对于编程测试来说,Tomcat没有必要ports安装,但是需要ports安装Apache Portable Runtime,否则Tomcat运行不起来。

1:安装 Apache Portable Runtime
$ cd /usr/ports/www/tomcat-native
$ sudo make install clean

2:从Apache直接download一个Tomcat 6.x的二进制包。在用户目录某处展开,如~/tomcat6。

3:进入Tomcat的bin目录,执行
$ cd ~/tomcat6/bin
$ ./catalina.sh run

在我的机器上抛出以下错误:
INFO: Starting Coyote HTTP/1.1 on http-8080
Nov 1, 2008 12:13:02 AM org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
Nov 1, 2008 12:13:02 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 978 ms
Nov 1, 2008 12:13:02 AM org.apache.catalina.core.StandardServer await
SEVERE: StandardServer.await: create[8005]:
java.net.BindException: Can't assign requested address
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
        at java.net.ServerSocket.(ServerSocket.java:185)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:373)

从Google上得知通常这个问题是由于Tomcat的代码在支持IPv6上有问题,需要设置Java虚拟机只使用IPv4。就是对JVM加以下-D参数,
   
    -Djava.net.preferIPv4Stack="true"

    -Djava.net.preferIPv4Address="true"

4:编辑catalina.sh添加以上两个参数,再启动,问题解决。

其实以上问题,Java的RMI程序在FreeBSD上也会遇到,也可以同样处理

5:对于Eclipse,可以在Eclipse的目录的eclipse.ini里添加以上两个参数解决网络方面的问题。

6:对于Netbeans,可以在启动Netbeans时添加以上两个参数,比如,在我的系统中
    $netbeans -J-Djava.net.preferIPv4Stack=true -J-Djava.net.preferIPv4Address=true

7:对于JBoss同样以这种方法解决

留此文备忘








09-27 23:52