我使用 ACE TAO 作为 CORBA 实现。我想知道是否有人知道设置最大消息大小和最大连接数的任何选项。
omniORB有两个选项,giopMaxMsgSize并且maxGIOPConnectionPerServer。
即使 TAO 有ORBMaxMessageSize并且ORBLingerTimeout它导致我的服务器崩溃。我什至不知道这些是否是正确的选择。
这就是 TAO 调试输出的内容。
TAO (30232|3086943952) ORB_Core: Unable to initialize Codeset Manager
TAO (30232|3086943952) - Completed initializing the process-wide service context
TAO (30232|3086943952) - Default ORB services initialization begins
TAO (30232|3086943952) - Default ORB services initialization completed
TAO (30232|3086943952) - We are the default ORB ...
TAO (30232|3086943952) - Initializing the orb-specific services
TAO (30232|3086943952) - Setting primary connection timeout hook
TAO …Run Code Online (Sandbox Code Playgroud) 据我所知,CORBA用于通过中间操作来维护分布式系统中的互操作性.
我想知道的是,CORBA是一种语言,它有自己的编码语法,或者我们使用其他语言如C#,Java等在CORBA 中编码.
我经历了这个问题,但没有找到直接答案.
我有这样的事:
User.idl:
#ifndef __USER_IDL__
#define __USER_IDL__
interface Group;
interface User
{
typedef sequence<Group> Groups;
Groups getGroups();
void setGroups(in Groups g);
};
#endif
Run Code Online (Sandbox Code Playgroud)
UserImpl.h和UserImpl.cpp:
class UserImpl : public POA_User
{
private :
User::Groups groups;
public :
User::Groups* getGroups();
void setGroups(const ::User::Groups& g);
};
#endif
#include "UserImpl.h"
User::Groups* UserImpl::getGroups()
{
return &(this->groups);
}
void UserImpl::setGroups(const ::User::Groups& g)
{
this->groups.length(g.length());
for(int i=0; i<g.length(); i++)
{
this->groups[i] = this->groups[i];
}
}
Run Code Online (Sandbox Code Playgroud)
和Group.idl:
#ifndef __GROUP_IDL__
#define __GROUP_IDL__
#include "User.idl"
interface Group
{
typedef sequence<User> Users; …Run Code Online (Sandbox Code Playgroud) 我想在 idl 文件中编写一个枚举:
module Media
{
enum eSpeed
{
int speed1 = 2000,
int speed2 = 4000,
int speed3 = 8000
};
};
Run Code Online (Sandbox Code Playgroud)
但 CORBA 不允许在枚举情况下进行任何赋值。如何解决这个问题?
我阅读了很多关于 ICE 或 Corba 等技术中使用的服务对象和对象的内容。有很多资源可以让我阅读如下内容:
一个仆人可以处理多个对象(为了节省资源)。一个对象可以由多个仆人处理(为了可靠性)。
有人能告诉我这两个陈述的真实例子吗?
其他一些团队正在调用我们的FileNet自定义应用程序来搜索文档.我相信有些用户正面临间歇性故障,因为我们正在获取门票(虽然没有用户报告此问题)以下错误,我尝试用不同的方案验证我们的服务,但他们都工作但我不知道是什么导致此错误.任何建议/帮助将不胜感激.
<stackTrace>
at com.filenet.apiimpl.transport.ejb.EJBSession.throwException(EJBSession.java:1122)
at com.filenet.apiimpl.transport.ejb.EJBSession.throwException(EJBSession.java:1045)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl._getObjects(EJBSession.java:650)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl.getObjects(EJBSession.java:575)
at com.filenet.apiimpl.transport.ejb.EJBSession.getObjects(EJBSession.java:471)
at com.filenet.apiimpl.util.SessionHandle.getObjects(SessionHandle.java:346)
at com.filenet.apiimpl.core.Session.callGetObjects(Session.java:132)
at com.filenet.apiimpl.core.Session.executeGetObject(Session.java:340)
at com.filenet.apiimpl.core.Session.getObject(Session.java:354)
at com.filenet.apiimpl.core.DispatchEntries.FetchObject_28(DispatchEntries.java:907)
at com.filenet.apiimpl.core.ObjectStoreImpl.fetchObject(ObjectStoreImpl.java:1643)
at com.filenet.api.core.Factory$ClassDescription.fetchInstance(Factory.java:21761)
at ecm.service.p8ceservices.implementation.integration.SearchP8ObjectAdapter.retrievePropertyDefinitions(SearchP8ObjectAdapter.java:352)
at ecm.service.p8ceservices.implementation.integration.SearchP8ObjectAdapter.integrate(SearchP8ObjectAdapter.java:158)
at ecm.service.p8ceservices.implementation.integration.ContentEngineAdapter.execute(ContentEngineAdapter.java:37)
</stackTrace>
</exception><exception name="java.lang.IndexOutOfBoundsException" message="Data to be copied (length 2124) exceeds space available (480)" sequence="0" guid="sfr2mx3l:jewe2wkf:00000000:00000121"><source class="com.ibm.rmi.util.buffer.SimpleByteBuffer" archive="" vendor="" version="" /><stackTrace>
at com.ibm.rmi.util.buffer.SimpleByteBuffer.write(SimpleByteBuffer.java:166) at com.ibm.rmi.iiop.ClientRequestImpl.reInvoke(ClientRequestImpl.java:489)
at com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:637) at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1377)
at com.ibm.rmi.corba.ClientDelegate.invoke(ClientDelegate.java:695) at com.ibm.CORBA.iiop.ClientDelegate.invoke(ClientDelegate.java:1407)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:484) at com.filenet.apiimpl.transport.ejbstubs._Engine_Stub.getObjects(Unknown Source)
at com.filenet.apiimpl.transport.ejb.EJBSession$EJBImpl._getObjects(EJBSession.java:638)</stackTrace>
Run Code Online (Sandbox Code Playgroud) 我们在 WebSphere 8.5 上部署了一个 EJB 应用程序,我们在控制台上收到以下异常,
java.rmi.Exception:CORBA NO_RESPONSE 0x4942fb01 Maybe: nested exception is:
RESPONSE: Request 221370 timed out vmcid: IBM minor code: B01 Completed maybe
Run Code Online (Sandbox Code Playgroud)
我还可以看到异常的根本原因如下:
caused by: org.omg.CORBA.NO_RESPONSE: Request timed out vmcid: B01 Completed maybe
at com.ibm.rmi.iiop.Connection.getCallStream(Connection.java:2493)
Run Code Online (Sandbox Code Playgroud)
其结果是最终用户无法连接到应用程序。
经过一些分析:我发现主要原因可能是连接池设置。所以有人可以帮我解决以下问题: