我有一个jdk版本从jdk 1.7.21更新到jdk 1.7.25,构建在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年,仅限第三方二进制代码。想知道jdk 1.7.25的真正问题在哪里?
我使用“老派”技能打印出哪条线被打破,它看起来卡在狭窄(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技能。
谢谢, 柯蒂斯