我有一个从 jdk 1.7.21 更新到 jdk 1.7.25 的 jdk 版本,构建在 Solaris 10 上,生产运行在 windows server 2003 上。这次我没有更新任何 java 代码,因为构建成功,我会更新 java 代码如果编译遇到错误,例如在 jdk 从 1.6.45 到 jdk 1.7.xx,我必须更新一些文件以匹配 jdk 1.7 API 更改,然后它运行正常,从 jdk 1.7.xx 到 jdk1 有一些更新.7.21,每次更新都很好。但这一次,从 1.7.21 源代码构建 jdk 1.7.25 后,编译正常,但运行时服务器运行正常,但客户端卡在中间 - 有一个 SESSION_ADAPTER 构建失败,我们使用了 OPNORG 1.2已超过 10 年,并且只有第 3 方二进制代码。想知道 jdk 1.7.25 的真正问题在哪里?
我使用“old school”技能打印出哪条线断了,它看起来卡在了narrow(orb)的功能中,得到了“BAD_PARAM”的异常:
这是java文件(它是由CORBA IDL生成的,我们没有OPNORG的源代码):
package DPEM.src.presentation.adaptation.adaptationIfc;
//
// Helper class for : SessionAdapter
//
// @author OpenORB Compiler
//
public class SessionAdapterHelper
{
//
// Insert SessionAdapter into an any
// @param a an any
// @param t SessionAdapter value
//
public static void insert( org.omg.CORBA.Any a, DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapter t )
{
a.insert_Object( t , type() );
}
//
// Extract SessionAdapter from an any
// @param a an any
// @return the extracted SessionAdapter value
//
public static DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapter extract( org.omg.CORBA.Any a )
{
if ( !a.type().equal( type() ) )
throw new org.omg.CORBA.MARSHAL();
try {
return DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapterHelper.narrow( a.extract_Object() );
}
catch ( org.omg.CORBA.BAD_PARAM ex ) {
throw new org.omg.CORBA.MARSHAL();
}
}
//
// Internal TypeCode value
//
private static org.omg.CORBA.TypeCode _tc = null;
//
// Return the SessionAdapter TypeCode
// @return a TypeCode
//
public static org.omg.CORBA.TypeCode type()
{
if ( _tc == null ) {
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init();
_tc = orb.create_interface_tc(id(),"SessionAdapter");
}
return _tc;
}
//
// Return the SessionAdapter IDL ID
// @return an ID
//
public static String id()
{
return _id;
}
private final static String _id = "IDL:adaptation.presentation.src.DPEM/adaptationIfc/SessionAdapter:1.0";
//
// Read SessionAdapter from a marshalled stream
// @param istream the input stream
// @return the readed SessionAdapter value
//
public static DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapter read( org.omg.CORBA.portable.InputStream istream )
{
return( DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapter )istream.read_Object( DPEM.src.presentation.adaptation.adaptationIfc._SessionAdapterStub.class );
}
//
// Write SessionAdapter into a marshalled stream
// @param ostream the output stream
// @param value SessionAdapter value
//
public static void write( org.omg.CORBA.portable.OutputStream ostream, DPEM.src.presentation.adaptation.adaptationIfc.SessionAdapter value )
{
ostream.write_Object((org.omg.CORBA.portable.ObjectImpl)value);
}
//
// Narrow CORBA::Object to SessionAdapter
// @param obj the CORBA Object
// @return SessionAdapter Object
//
public static SessionAdapter narrow( org.omg.CORBA.Object obj )
{
if ( obj == null )
return null;
if ( obj instanceof SessionAdapter )
return ( SessionAdapter)obj;
if ( obj._is_a( id() ) )
{
_SessionAdapterStub stub = new _SessionAdapterStub();
stub._set_delegate( ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate() );
return stub;
}
throw new org.omg.CORBA.BAD_PARAM();
}
//
// Unchecked Narrow CORBA::Object to SessionAdapter
// @param obj the CORBA Object
// @return SessionAdapter Object
//
public static SessionAdapter unchecked_narrow( org.omg.CORBA.Object obj )
{
if ( obj == null )
return null;
if ( obj instanceof SessionAdapter )
return ( SessionAdapter)obj;
_SessionAdapterStub stub = new _SessionAdapterStub();
stub._set_delegate( ((org.omg.CORBA.portable.ObjectImpl)obj)._get_delegate() );
return stub;
}
}
过去两周我不知道,希望能从各位大师那里借一点 java/IDL 技能。
谢谢,柯蒂斯