当前位置: 首页 > 知识库问答 >
问题:

将代码迁移到 Liberty 配置文件时出现上下文初始化错误

劳亦
2023-03-14

我们正在将代码从WAS8.0迁移到Liberty17.0.0.1版本。当我们尝试测试应用程序在线功能时,我们收到以下错误,

java.lang.ClassNotFoundException: 
com.ibm.websphere.naming.WsnInitialContextFactory 
com.ibm.ws.jndi.internal.WASInitialContextFactoryBuilder

我们还使用自由迁移工具包检查了我们的耳朵文件,我们在其中一个罐子里变得越来越严重,

使用java.naming.factory的默认值。initial和java.naming.provider。迁移到Liberty时的url JNDI属性。这些属性的以下WebSphere Application Server传统值无效:

java.naming.factory.initial=com.ibm.websphere.naming。WsnInitialContextFactory java.naming.provider。url=corbaloc:iiop:localhost:2809
使用InitialContext(哈希表)构造函数时,请删除这两个属性。如果未使用其他属性,则可以使用默认构造函数。

如果属性文件规则检测到jndi.properties文件,请检查该文件中的属性。请删除java.naming.factory.initial和java.naming.provider.url属性,或者如果不需要这些属性,请删除该文件。

有人能帮助我们如何使用默认的< code>InitialContext。请找到附件中调用jndi和上下文路径的代码,

import java.util.HashMap;
import java.util.Map;

import javax.naming.InitialContext;
import javax.naming.NamingException;


/**
 * @class name JndiObjectLocator.java
 * @author pkannan
 * @creation date Nov 1, 2004
 * @description 
 */

public class JndiObjectLocator {
    /** Intial context to the JNDI Tree */
    private InitialContext ctx = null;

    /** Object Cache  */
    private Map cache = null;

    //Object used to log messages
    private static final IBwLog bwLog =
        BwLogFactory.create(BwLogUtil.getClassName());

    /**
     * Creates a new JndiObjectLocator object.
     *
     * @throws BOBRuntimeException When Initial Context creation fails.
     */
    public JndiObjectLocator() throws BOBNestedRuntimeException {
        cache = new HashMap();

        try {
            ctx = new InitialContext();
            System.out.println("CTX:" +ctx);
        } catch (NamingException ne) {
            bwLog.error(EVENTS.INITIALIZE, "Context Initialization Failure"+BwLogUtil.stackToStr(ne));
            throw new BOBNestedRuntimeException(
                "Context Initialization Failure",
                ne);
        }
    }

    /**
     * Fetches any Object bound in JNDI.
     *
     * @param jndiName JNDI Name of the Object to be retrieved.
     *
     * @return Object bound to the given JNDI name.
     *
     * @throws ObjectLookUpException When JNDI lookup fails for any reason.
     */
    public Object fetch(String jndiName) throws ObjectLookUpException {
        Object obj = cache.get(jndiName);
        System.out.println("JNDI:" +jndiName);
        if (obj == null) {
            try {
                if (ctx != null) {
                    obj = ctx.lookup(jndiName);
                    if (obj != null && cache.get(jndiName) == null) {
                        synchronized (cache) {
                            cache.put(jndiName, obj);
                        }
                    }
                } else {
                    bwLog.error(
                        EVENTS.INITIALIZE,
                        "Context Initialization Failure");
                    throw new BOBRuntimeException("Context Initialization Failure");
                }
            } catch (NamingException ne) {
                bwLog.error(
                    EVENTS.JNDI_LOOKUP,
                    "Context Initialization Failure"+BwLogUtil.stackToStr(ne));
                throw new ObjectLookUpException(
                    "BOB DataSource Lookup Failure",
                    ne);
            }
        }

        return obj;
    }

    /**
     * Closes the JNDI context.
     *
     * @throws BOBRuntimeException When IntialContext fails to close.
     */
    public void destroy() throws BOBNestedRuntimeException {
        try {
            ctx.close();
        } catch (NamingException ne) {
            bwLog.error(EVENTS.INITIALIZE, "Naming Context Closing Exception"+BwLogUtil.stackToStr(ne));
            throw new BOBNestedRuntimeException(
                "Naming Context Closing Exception",
                ne);
        }
    }
}

共有1个答案

史劲
2023-03-14

您在此调用中使用默认的<code>InitialContext</code>:

ctx = new InitialContext();

因此,您只需要从放置Jndi.properties的任何位置删除它。

非默认上下文如下所示:

Hashtable env = new Hashtable();
... setting env properties
... creating non def context
ctx = new InitialContext(env);
 类似资料:
  • 在使用PostgreSQL数据库启动sprint boot应用程序时出现错误,我试图找到一个解决方案,但到目前为止还没有找到。 这里有个错误: 2018-03-29 17:48:17.945警告13508--[main]ationConfigEmbeddedWebApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springFramework.Beans.Fa

  • 下面提供了引用spring-cloud-sleuth的构建文件的一部分。 添加此依赖项后,应用程序无法以以下异常启动(基于注释添加) 我使用slf4j而不是log4j来实现日志框架,当我删除sleuth依赖项时,应用程序运行良好。 我注意到,当包含spring-cloud依赖项时,会出现以下“附加”propertysources。

  • 我似乎不能在本地工作,即使同样的WAR在远程服务器上也能工作。当我在本地访问我的应用程序时,我得到了“没有找到上下文根”的错误。自由档案版本是8.5.5.5。 以下是相关文件: 服务器.xml 留言.log ibm-web-bnd.xml ibm-web-ext.xml

  • 我已经迁移了所有内容并将应用程序部署到新服务器。当我尝试运行它时,我得到以下异常: 尝试使用提供程序URL获取初始上下文时发生通信故障:“corbaloc:iiop:127.0.0.1:2809”。确保URL中的任何引导地址信息正确,并且目标名称服务器正在运行。没有端口规范的引导地址默认为端口2809。除了不正确的引导地址或名称服务器不可用之外,可能的原因包括网络环境和工作站网络配置。 现在,在完

  • 接口说明 上传文件初始化 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /wish3dearth/api/material/upload/v1.0.0/startUploadInit 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN file

  • 接口说明 上传文件初始化 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 POST /wish3dearth/api/material/upload