linux上的java.library.path和glassfish

时间:2014-06-19 23:58:48

标签: java linux glassfish-3

我在ubuntu linux机器上运行glassfish v3。我一直在服务器上遇到一些问题。有时服务器将停止接受请求并挂起。日志中的任何内容都没有给我任何帮助。在尝试追踪这个问题时,我注意到了一个奇怪的问题......以下是我在输入 ps aux |时看到的内容。 grep java:

155 % ps aux | grep java
my-company  24242 90.0 17.3 3656228 690024 ?      Sl   18:39   1:17 /usr/home/my-company/local/jdk1.6.0_45/bin/java -cp /usr/home/my-company/glassfish3/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOptions -XX:MaxPermSize=256m -XX:NewRatio=2 -Xmx1024m -client -javaagent:/usr/home/my-company/glassfish3/glassfish/lib/monitor/flashlight-agent.jar -Dfelix.fileinstall.disableConfigSave=false -Djavax.net.ssl.keyStore=/usr/home/my-company/glassfish3/glassfish/domains/domain1/config/keystore.jks -Djava.awt.headless=true -Dfelix.fileinstall.poll=5000 -Djava.endorsed.dirs=/usr/home/my-company/glassfish3/glassfish/modules/endorsed:/usr/home/my-company/glassfish3/glassfish/lib/endorsed -Dfelix.fileinstall.bundles.startTransient=true -Djavax.net.ssl.trustStore=/usr/home/my-company/glassfish3/glassfish/domains/domain1/config/cacerts.jks -Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as -Djava.security.auth.login.config=/usr/home/my-company/glassfish3/glassfish/domains/domain1/config/login.conf -DANTLR_USE_DIRECT_CLASS_LOADING=true -Dgosh.args=--nointeractive -Dosgi.shell.telnet.maxconn=1 -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver -Dfelix.fileinstall.dir=/usr/home/my-company/glassfish3/glassfish/modules/autostart/ -Dosgi.shell.telnet.port=6666 -Djava.security.policy=/usr/home/my-company/glassfish3/glassfish/domains/domain1/config/server.policy -Dfelix.fileinstall.log.level=2 -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory -Dosgi.shell.telnet.ip=127.0.0.1 -Dcom.sun.aas.instanceRoot=/usr/home/my-company/glassfish3/glassfish/domains/domain1 -Dcom.sun.aas.installRoot=/usr/home/my-company/glassfish3/glassfish -Djava.ext.dirs=/usr/home/my-company/local/jdk1.6.0_45/lib/ext:/usr/home/my-company/local/jdk1.6.0_45/jre/lib/ext:/usr/home/my-company/glassfish3/glassfish/domains/domain1/lib/ext -Dfelix.fileinstall.bundles.new.start=true -Dorg.glassfish.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command,org.apache.felix.fileinstall -Djava.library.path=/usr/home/my-company/glassfish3/glassfish/lib:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64:/usr/lib/jvm/java-6-openjdk-amd64/lib/amd64:/usr/java/packages/lib/amd64:/usr/lib/jni:/lib:/usr/lib com.sun.enterprise.glassfish.bootstrap.ASMain -domainname domain1 -asadmin-args --host,,,localhost,,,--port,,,4848,,,--secure=false,,,--terse=false,,,--echo=false,,,--interactive=false,,,start-domain,,,--verbose=false,,,--debug=false,,,--domaindir,,,/usr/home/my-company/glassfish3/glassfish/domains,,,domain1 -instancename server -verbose false -debug false -asadmin-classpath /usr/home/my-company/glassfish3/glassfish/modules/admin-cli.jar -asadmin-classname com.sun.enterprise.admin.cli.AsadminMain -upgrade false -type DAS -domaindir /usr/home/my-company/glassfish3/glassfish/domains/domain1 -read-stdin true
my-company  24427  0.0  0.0   6512   620 pts/0    S+   18:40   0:00 grep java

有些东西比较奇怪......似乎用于启动glassfish的jvm(通过asadmin命令工具)是位于 /usr/home/my-company/local/jdk1.6.0_45的JVM ,但在文本全局中,您可以看到 java.library.path 集,它只包含 / usr / lib / jvm / java-6中的库-openjdk-amd64 /

托管公司我默认使用安装 openJDK 。我已经安装了java /usr/home/my-company/local/jdk1.6.0_45 的官方oracle版本 - 这是我想要使用的版本,我已将JAVA_HOME和JDK_HOME设置为指向反映这一点。如何设置 java.library.path ?它应该通过环境变量设置,还是我必须在glassfish内部设置?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以在文件<GLASSFISH_HOME>/glassfish/config/asenv.conf中设置要使用的JDK。

将条目AS_JAVA设置为指向所需的JDK,如果不存在,请在文件末尾添加如下条目:

AS_JAVA=/usr/home/my-company/local/jdk1.6.0_45

以下是关于How Does GlassFish Pick the JVM to Run In?的博客条目的一部分:

  

按优先顺序从高到低:

     
      
  1. java-config中domain.xml中指定的jdk位置(&#34; java-home&#34;)
  2.   
  3. asenv属性文件(在glassfish / config中)中AS_JAVA的内容
  4.   
  5. 无论环境如何变量JAVA_HOME指向。
  6.   
  7. java.home系统属性的用法如下:      
        
    1. java.home的父目录 - 这是因为有时JRE的java是asadmin的JVM,而JDK可能在上面的目录中。
    2.   
    3. java.home的内容
    4.   
  8.   

另见:

答案 1 :(得分:0)

glassfish中的

java.library.path指向glassfish的lib文件夹。通常,它在glassfish安装目录的 asenv.conf 文件中设置为 AS_NSS 键。在任何操作期​​间,如果共享库出现故障,那么您将看到以下错误。

no <lib> in java.library.path