gpt4 book ai didi

java - 使用 main() 方法运行数据库适配器测试

转载 作者:行者123 更新时间:2023-12-01 04:24:35 25 4
gpt4 key购买 nike

我作为后端支持的系统出现问题。我需要编写一个测试来调用处理与数据库通信的类之一,以便我可以注销它实际返回的内容。

系统设置

我们的系统是用Java开发的,部署在weblogic服务器上。它由很多部分组成,我在这里不做详细介绍。但有趣的是,我们有一个类充当数据库的适配器。我们将其称为“CMAdapter”,它是 IBM Content Manager 特定代码的实现,用于处理与数据库的交互。在此类中,我们有一个名为 fetchAct() 的方法,该方法将一个带有搜索参数的对象作为参数,并返回搜索结果。在这种情况下,它返回一个行为。我们拥有的代码在 weblogic 服务器上运行,该服务器安装了 IBM Information Integrator for Content,以便它可以与安装并在不同服务器上运行的 IBM Content Manager 进行通信。该系统使用 .ejb 和一些 .jar 文件部署在服务器上。

问题

我收到一个案例,指出对于某些行为,用户没有收到预期的完整行为,而只收到其中的一部分。系统本身没有显示任何错误,并且文档存在于数据库中。所以我想做的是编写一个简单的测试程序,用一组预定的搜索条件调用这个“CMAdapter”,以便我可以注销搜索的返回结果。

我的问题

如何使用 main() 方法创建一个独立类并在服务器上运行它?我需要以某种方式调用 CMAdapter.fetchAct() 方法,以便它像任何正常查询一样在服务器上运行?

我的测试课


public class TestHamtaAkt
{
public static void main(String[] args) throws BasException
{
Log LOG = Log.getLog(TestHamtaAkt.class);

// Get the CMAdapter
CMAdapter cmadapter = new CMAdapter();
// Create empty instance of our query object
SokVO sokvo = new SokVO();

// Put a value to search for in our query object
AttributVO aktAttribut = new AttributVO();
aktAttribut.setNamn(DLAKonstanter.AKT_KORT_R_KOD);
aktAttribut.setVarde("090084831574");
sokvo.aktAttributLista().add(aktAttribut);

// do the search an recieve the answer
AktVO aktvo = cmadapter.hamtaAkt(sokvo);

// log out the result
LOG.debug("main", "Akten som hämtades: " + aktvo.toString(), null);
}
}

最佳答案

感谢大家阅读我的问题。看来我已经找到了自己问题的答案。它藏在我的一个同事那里。我的问题的答案是,为了能够访问服务器部署的代码,我需要从我的网络服务器获取 JNDI 上下文,并从中查找我需要的类。

我在连接时仍然遇到一些问题,但这可能只是我的配置关闭了。我现在知道如何获取一个简单的 java 类来调用服务器上已部署的类。

这是我当前用于从 WLS 服务器获取上下文的代码:


private static InitialContext getWLSContext(String url) throws NamingException
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, WLS_CONTEXT_FACTORY);
//env.put(Context.PROVIDER_URL, "t3://" + host + ":" + port);
env.put(Context.PROVIDER_URL, url);

return new InitialContext(env);
}

这是我获取所需类(class)的代码。



public static EJBObject getRemote(String url, String jndiname, Class homeClass, AppserverTyp typ) throws Exception
{
Object obj = getWLSContext(url).lookup(jndiname);
EJBHome home = (EJBHome) javax.rmi.PortableRemoteObject.narrow(obj, homeClass);

Class homeBase = home.getClass();
Method m = homeBase.getMethod("create", (Class[])null);
EJBObject remote = (EJBObject) m.invoke(home, (Object[])null);
return remote;
}

我希望这可以帮助有类似问题的人继续前进。就像我说的,我仍然需要真正让这段代码为我工作,但这就是我最初的问题的答案,即如何从外部类调用已部署的方法。

关于java - 使用 main() 方法运行数据库适配器测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18613541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com