消息映射中的数据源连接问题

2020-09-10 04:18发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

当我想在消息映射中连接数据源别名时出现此错误:

方法ConnectionFactoryImpl.getConnection()中的

ResourceException:com.sap.engine.services.connector.exceptions.BaseResourceException:无法打开具有LocalTransaction支持的资源(托管连接)或在同一事务中添加第二个 组件" ejbContexts/ 应用程序" sap.com/com.sap.xi.repository">

这是代码:

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY," com.sap.engine.services.jndi.InitialContextFactoryImpl");

env.put(Context.PROVIDER_URL," localhost:50004");

InitialContext ctx = new InitialContext(env);

DataSource ds =(DataSource)ctx.lookup(" jdbc/UDF_Oracle_XIFunction");

Connection con = ds.getConnection();

可以找到数据源,但连接会导致异常。

我已经使用JDBC版本1.0和2.0的数据源别名进行了尝试。

在JDBC 2.0版中,我尝试使用ConnectionPoolDataSource和XADataSource。

我也尝试使用默认连接隔离= TRANSACTION_NONE。

与此同时,我认为这不是编码或数据源问题,而是容器中的配置问题。

有人有主意吗?

感谢,

苏珊

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

当我想在消息映射中连接数据源别名时出现此错误:

方法ConnectionFactoryImpl.getConnection()中的

ResourceException:com.sap.engine.services.connector.exceptions.BaseResourceException:无法打开具有LocalTransaction支持的资源(托管连接)或在同一事务中添加第二个 组件" ejbContexts/ 应用程序" sap.com/com.sap.xi.repository">

这是代码:

Hashtable env = new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY," com.sap.engine.services.jndi.InitialContextFactoryImpl");

env.put(Context.PROVIDER_URL," localhost:50004");

InitialContext ctx = new InitialContext(env);

DataSource ds =(DataSource)ctx.lookup(" jdbc/UDF_Oracle_XIFunction");

Connection con = ds.getConnection();

可以找到数据源,但连接会导致异常。

我已经使用JDBC版本1.0和2.0的数据源别名进行了尝试。

在JDBC 2.0版中,我尝试使用ConnectionPoolDataSource和XADataSource。

我也尝试使用默认连接隔离= TRANSACTION_NONE。

与此同时,我认为这不是编码或数据源问题,而是容器中的配置问题。

有人有主意吗?

感谢,

苏珊

付费偷看设置
发送
2条回答
Haoba3210
1楼 · 2020-09-10 04:29.采纳回答

您好Susanne-

此异常意味着您需要使用XA数据源。 该应用程序尝试在全局(JTA)事务的上下文中打开来自LocalTransaction支持的两个不同数据源的两个连接。

首先,设置您的XA数据源并对其进行测试,以确保它可以正常工作 。 即,从Visual Admin/JDBC连接器服务的"数据库初始化"选项卡中,您是否能够成功执行测试查询? 确保在"其他"选项卡中指定适当的属性,例如URL,用户和密码的"键/值"对。 默认连接隔离可以保留为DEFAULT。 SQL引擎应为供应商SQL。 一旦成功,至少您知道这不是连接问题。 然后尝试进行测试映射,以再次进行数据库查找。 如果这时失败,则可能是编码问题。

关于

Jin

粗暴的香蕉
2楼-- · 2020-09-10 04:46

嗨苏珊,

OraclePoolDataSource工作正常。 该应用程序需要XADataSource。 我正在将其从JBoss移植到SAP Web AS。

所以我不知道他们为什么需要它。 我也是SAP Web AS的新手。 为了进一步发展,我将其更改为OraclePoolDataSource。

现在,应用程序已成功启动。

我试图通过网络启动来启动客户端。 客户端的servlet从数据源获取连接失败,但出现以下异常

原因:com.sap.engine.services.dbpool.exceptions.BaseSQLException:方法ConnectionFactoryImpl.getConnection()中发生ResourceException:com.sap.engine.services.connector.exceptions.BaseResourceException:不允许打开连接!

在com.sap.engine.services.dbpool.cci.ConnectionFactoryImpl.getConnection(ConnectionFactoryImpl.java:59)

...还有37

原因:com.sap.engine.services.connector.exceptions.BaseResourceException:不允许打开连接!

at com.sap.engine.services.connector.resource.impl.RestrictedResourceSetImpl.getSharedEventHandler(RestrictedResourceSetImpl.java:64)

com.sap.engine.services.connector.jca.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:172)

com.sap.engine.services.dbpool.cci.ConnectionFactoryImpl.getConnection(ConnectionFactoryImpl.java:51)

还有我之前注意到的其他错误

异常com.sap.engine.services.security.exceptions.BaseLoginException:一些登录模块出错。

com.sap.engine.services.security.login.ModulesProcessAction.run(ModulesProcessAction.java:102)

在java.security.AccessController.doPrivileged(本机方法)

com.sap.engine.services.security.login.FastLoginContext.login(FastLoginContext.java:123)

在com.sap.engine.services.servlets_jsp.server.runtime.context.SessionServletContext.doLogin(SessionServletContext.java:547)

com.sap.engine.services.servlets_jsp.server.runtime.context.SessionServletContext.checkUser(SessionServletContext.java:267)

com.sap.engine.services.servlets_jsp.server.runtime.context.ApplicationContext.checkMap(ApplicationContext.java:400)

com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.checkRequest(HttpHandlerImpl.java:64)

com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:655)

com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:221)

com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

com.sap.engine.services.httpserver.server.Processor.request(Processor.java:146)

com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

com.sap.engine.core.cluster.impl6.session.UnorderedChannel $ MessageRunner.run(UnorderedChannel.java:71)

在com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

在java.security.AccessController.doPrivileged(本机方法)

在com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:140)

由以下原因引起:java.lang.OutOfMemoryError

我尝试使用configtool更改内存设置。

仍然出现OutOfMemeoryError。

感谢您在此方面的帮助。

我今天整天都试过了,

再次感谢您的快速回复。 这有助于我快速进步。

Kavitha

一周热门 更多>