我正在将我的应用程序Web逻辑移动到Tomcat7

时间:2015-04-22 18:43:42

标签: tomcat migration weblogic

当应用程序在weblogic中运行时,下面的代码工作正常但在tomcat中它给出了错误。 主要问题是加载java:comp/env/jmx/runtime

所以请告诉我在tomcat中运行代码需要做什么配置。

我的代码:

    MBeanServer server = (MBeanServer)ctx.lookup("java:comp/env/jmx/runtime");
    // Get the Platform MBean Server
    ObjectName rs = new ObjectName("com.bea:Name=RuntimeService,Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
    HashMap map = null;
    try
    {
        ObjectName domCfg = (ObjectName) server.getAttribute(rs,"DomainConfiguration");

        ObjectName[] jdbcSysResources =
        (ObjectName[]) server.getAttribute(domCfg, "JDBCSystemResources");

        map = new HashMap();
        for (int i=0 ; i<jdbcSysResources.length ; i++)
        {
            ObjectName jdbcResourceBean = (ObjectName) server.getAttribute(jdbcSysResources[i],"JDBCResource");

            ObjectName driverParamsBean =(ObjectName)server.getAttribute(jdbcResourceBean,"JDBCDriverParams");
            StringBuffer jdbcParams = new StringBuffer();
            ObjectName drvPropertiesBean = (ObjectName)server.getAttribute(driverParamsBean,"Properties");
            ObjectName[] drvProperties = (ObjectName[])server.getAttribute(drvPropertiesBean,"Properties");

            for(int j=0; j<drvProperties.length; j++)
            {
                String propName = (String)server.getAttribute(drvProperties[j],"Name");
                String propVal = (String)server.getAttribute(drvProperties[j],"Value");
                jdbcParams.append(propName).append("=").append(propVal).append(";");
            }
            String strTest = drvProperties.toString();

            ObjectName dsnParams =(ObjectName)server.getAttribute(jdbcResourceBean,"JDBCDataSourceParams"); 
            String[] dsnParamNames = (String[])server.getAttribute(dsnParams,"JNDINames");
            map.put(dsnParamNames[0].toString(),jdbcParams.toString());

tomcat服务器出错: -

SystemCheck - Naming Exception: javax.naming.NameNotFoundException: 
Name [jmx/runtime] is not bound in this Context. Unable to find [jmx].
04/22 01:32 SystemAvailability -> MEL check failed - null
java.lang.NullPointerException

Tomcat Context.xml ---   - 数据源1 -
       &LT;资源名称=&#34; jdbc / datasource1&#34; AUTH =&#34;集装箱&#34; driverClassName =&#34; com.microsoft.sqlserver.jdbc.SQLServerDriver&#34; maxActive =&#34; 50&#34;了maxidle =&#34; 10&#34; MAXWAIT =&#34; 10000&#34;密码=&#34; MEL01&#34;类型=&#34; javax.sql.DataSource中&#34; URL =&#34; JDBC:SQLSERVER:// XXX:1460;的databaseName = XXX&#34;用户名=&#34; XXX&#34; validationQuery =&#34; SELECT 1&#34; /&gt;    - 数据源2 -
。 ..

    < Resource  name="jdbc/datasource2"  auth="Container" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" maxActive="50" maxIdle="10" maxWait="10000"password="xxxx" type="javax.sql.DataSource" url="jdbc:sqlserver://xxxx:1460;databaseName=xxx" username="xxx" validationQuery="SELECT 1"/>

Web.xml中---

  <resource-ref>
    <res-ref-name>jdbc/datasouce1</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>CONTAINER</res-auth>
</resource-ref>

<resource-ref>
    <res-ref-name>jdbc/datasouce2</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>CONTAINER</res-auth>
</resource-ref> 

1 个答案:

答案 0 :(得分:0)

与Weblogic不同,Tomcat没有JNDI代理。要使代码按原样运行,您需要添加一些JNDI提供程序。

我建议使用DI代替。

spring框架可以做任何一个(例如)。

Here's an example