为什么wso2 server.sh不从lib文件夹中选择.jars

时间:2014-10-24 12:32:54

标签: wso2 wso2carbon wso2dss

wos2 server.bat 设置碳类路径从lib文件夹中获取jar文件,但 server.sh 尝试从bin中获取它们..请参阅下面的代码..这导致我们一个大问题,因为在dss文档中它说将数据库连接器jar放在lib文件夹中:

CARBON_CLASSPATH=""
if [ -e "$JAVA_HOME/lib/tools.jar" ]; then
    CARBON_CLASSPATH="$JAVA_HOME/lib/tools.jar"
fi
for f in "$CARBON_HOME"/bin/*.jar
do
    if [ "$f" != "$CARBON_HOME/bin/*.jar" ];then
        CARBON_CLASSPATH="$CARBON_CLASSPATH":$f
    fi
done
for t in "$CARBON_HOME"/lib/commons-lang*.jar
do
    CARBON_CLASSPATH="$CARBON_CLASSPATH":$t
done 

任何人都能解释一下吗?

2 个答案:

答案 0 :(得分:2)

WSO2 Carbon是适用于所有WSO2 Java产品的基于OSGi的平台。在Carbon中,有四个不同的“lib”文件夹。如果您曾经尝试过任何基于碳的产品,您可能会想到“为什么有四种不同的库?”。如果是这样,这篇文章将为您提供该问题的答案。 这些是您可以在Carbon中找到的“lib”文件夹。

[1] CARBON_HOME / webapps / ROOT / WEB-INF / lib Carbon是一个部署在嵌入式tomcat实例中的Web应用程序。这是特定于Carbon Web应用程序的lib文件夹,就像WEB-INF / lib文件夹中的任何其他Web应用程序一样。 Bridge servlet是将每个传入请求转发到Carbon的OSGi环境中的人。我们使用这个lib来放置我们的Bridge Servlet。 Tomcat从那里开始编写它并将传入的请求移交给它。

[2] CARBON_HOME / repository / components / lib 如果您希望它们在OSGi环境中成为纯粹的包,那么这就是放置普通罐的地方。这些包中的所有包都将导出到OSGi环境中。如您所知,Carbon可以根据需要进行扩展。您可以将自己的捆绑包添加到其中。因此,如果您有这些捆绑包的依赖jar,则可以将它们放在此lib中。

[3] CARBON_HOME / repository / lib 这是所有客户端库存在的地方。当您从CARBON_HOME / bin运行'ant'时,所有需要的jar都会放入此文件夹中。如果您想编写一个客户端(或者您可以使用WSAS中的WSDL2Java工具生成它)并对其进行测试,则可以在此lib中找到类路径中所需的所有jar集合。例如,通过将所有这些库添加到客户端类路径中来运行WSAS示例。

[4] CARBON_HOME / lib 这是我们放置tomcat所需的所有罐子以及其他一些因特定原因而开始的地方。这与Tomcat根lib相同。可以从部署的所有Web应用程序中看到这些库。而且,如果你将相同的jar放在这个lib中,也放在Carbon web app中,当Tomcat使用父类第一类加载时,它将从这个根lib中获取。

*** bin文件夹中有很少的库可以启动OSGi服务和一些特殊的东西。您不能将任何罐子放入垃圾箱以反映OSGi级别或任何其他类加载器。

答案 1 :(得分:1)

您必须将数据库连接器jar放入DSS_HOME / repository / components / lib目录并重新启动服务器[1]。它将它们添加到服务器类路径中。

[1] https://docs.wso2.com/display/DSS301/Changing+the+RDBMS