Issue 3068: Messaging sendc and sendp missing from portability interfaces Jira Issue I2JAV11-1
Issue 3643: Description of ORB.init parameters insufficient Jira Issue I2JAV11-2
Issue 3665: Java ORB Id Jira Issue I2JAV11-3
Issue 5108: J2EE ORB Socket Factory API Jira Issue I2JAV11-4
Issue 5646: Java source code for org.omg.PortableServer.POAOperations Jira Issue I2JAV11-5
Issue 5893: definition of FixedHolder should have been removed Jira Issue I2JAV11-6
Issue 7846: wrong enumeration value for SetOverrideType Jira Issue I2JAV11-7
Issue 9795: section 1.21.3 IDLEntity Jira Issue I2JAV11-8
Issue 15709: Specification does not provide mapping spec for Home, Component and Event Jira Issue I2JAV11-9
Issue 3068: Messaging sendc and sendp missing from portability interfaces (java-rtf)
Click here for this issue's archive.
Source: Ericsson (Mr. Chris Smith, nobody)
Nature: Uncategorized Issue
Severity:
Summary:
The Messaging Specification was adopted before Java Portability layer was really in place. In order to make portability work with the asynchronous stubs which will in future be generated, some things may be added to the portability interface. Each stub has a sendc_<op> and sendp_<op> operation which will need to call on the portable stub layer. A first glance at the requirements to make a portable implementation suggest that a sendc_invoke and sendp_invoke operation will probably need to be added to ObjectImpl and Delegate. I dont know if this is viewed as a "compatible" class change for JDK, or whether we will need to put derived classes in CORBA_3_0 package....
Move to Java RTF? Clearly an IDL Java mapping issue. Send to IDL-Java RTF
I have a number of questions/concerns about the description/usage of ORB.init arguments/properties. 1. There are only two properties described in the Java mapping spec: org.omg.CORBA.ORBClass and org.omg.CORBA.ORBSingletonClass. Setting these via property are described, but not setting these via application string array (ie., args in main). Yet the spec says these values can be obtained via the args array. I believe most folks assume "-ORBClass xxx" is the convention, since that's what the JDK's ORB uses, but it's not documented. 2. Ditto for applet parameters. It's assumed that they are of the form <param name = "org.omg.CORBA.ORBClass" value = "xxx"> but it is not documented. 3. Can this convention be generalized to accommodate the argument naming convention in the core spec? If we follow the convention that says org.omg.CORBA.ORBClass becomes -ORBClass; then can we say that a parameter -ORBXXX may also be specified by the property or applet parameter org.omg.CORBA.ORBXXX? 4. The text around the ORB arguments is tightly coupled to only ORBClass and ORBSingletonClass. It does not seem to expect other args/properties. For example: "...when creating an ORB instance, the class names of the ORB implementation are located using the following search order: ...". I assume the following search order also applies to any args/props. 5. The spec doesn't allow for extensions. "See Table 1-3 for a list of the property names and values that are recognized by ORB.init. Any property names not in this list shall be ignored by ORB.init()." Has the INS spec updated this table with -ORBInitRef and -ORBDefaultInitRef, for example? And the interceptor spec assumes that services are allowed to have their own arguments. And what about proprietary extensions? Given the word "shall", any extensions are non-CORBA-compliant. 6. Repeated arguments fall apart when presented as Properties. For example, the INS spec allows for the following invocation: java myapp -ORBInitRef XX=xx -ORBInitRef YY=yy -ORBInitRef ZZ=zz Since Properties entries are <key, value> pairs, and only one pair for a given key can exist, then if we tried entering the above as Properties we'd only get on of them, not all. I'm not sure how to fix this. Dictate that XX, YY, ZZ be the end of the ORBInitRef string rather than the start of a new string, perhaps? So then, specifying these as system properties for example, we'd have: java myapp -Dorg.omg.CORBA.ORBInitRefXX xx -Dorg.omg.CORBA.ORBInitRefYY yy -Dorg.omg.CORBA.ORBInitRefZZ zz That causes ugly parsing problems. We'd have to search the whole list of properties that contained a key that merely BEGAN with "org.omg.CORBA.ORBInitRef". And this falls apart in applets; we can get a list of all Properties, but we cannot get a list of all applet parameters. Personally I think this is a failing in the applet class, but that's life as we know it. I'm sorry to raise this as one issue instead of six, but most of these points are tightly coupled, so I didn't want to distance them from each other. And I'd like them all to be answered together anyway.
There are several reasons that Java ORB.init should support ORBId (without compromising security). For example: - Services built on Portable Interceptors work in relation to the ORB with which they are registered. There needs to be some means of identifying this ORB (besides its reference) so other services or facades (e.g., JNDI) can use the same ORB. - A Server Activation Framework needs an ORB Id to identify a particular orb (which hosts a persistent POA) within a server. The triple: server id, orb id, poa name is *conceptually* embedded in the adapter id of a POA making it unique.
Incorporate change and close issue. However, this is out-of-scope for the interceptors FTF. It is being transferred to the IDL to java RTF.
In order to meet the interoperability compliance requirements, ORBs must include an IIOP implementation using TCP/IP plain text sockets. J2EE implementations are required to support CSIv2 and thus need additional control over the sockets an ORB creates. It may be necessary - to get the ORB to listen on additional sockets, of differing types - to get the ORB to connect to alternative sockets, of different types, for a given IOR - for information about these sockets to be included in object references exported by the ORB - for socket data to be available to request interceptors, e.g SSL certificates Portable IORInterceptors can be used to add this information as tagged components in the profiles within an IOR. A mechanism is required to modify the ORB's behaviour to allow it to handle different socket types, listen on additional sockets, connect to alternative sockets and make additional data available to interceptors. Since this is a J2EE requirement which needs speedy resolution, it seems appropriate to resolve it by the addition of Java specific APIs in the IDL to Java specification. For example, - a pluggable ORB socket factory could be introduced which would be used whenever the ORB needed to create a serverSocket or an outbound socket for a given IOR or end point - a means of registering such a socket factory would be required. Options for this include:- . adding an ORB method: this may cause problems in initialisation . adding a Java specific extension to the PI ORBInitInfo interface so that the registration would need to be called from the pre_init/post_init methods in an ORBInitializer: this ties the Socket Factory with PIs, but both are likely to be required for J2EE. - a means of specifying ports on which an ORB/POA should listen would be useful but this may be infeasible as part of this issue due to the variety of ORB/POA implementations. - the PI Client and ServerRequestInfo and IORInfo interfaces may need to be extended to support access to Connection related data
The Java source code for org.omg.PortableServer.POAOperations in ptc/02-06-14 defines the method create_reference_with_id as throwing org.omg.PortableServer.POAPackage.WrongPolicy. However, the CORBA/IIOP 2.4 specification (formal/00-10-01) specifies this operation as NOT raising any exceptions (see section 11.3.8.19). Which is correct?
The resolution of issue #3668 should have removed the definition of FixedHolder. There is no need for a Holder for an anonymous Fixed type since none can be defined. Type specific Holders are necessary in order to define the correct read and write operations that use the write_fixed and read_fixed defined by the resolution of 3668. Proposed resolution: Remove the definition of FixedHolder from section 1.4.1.4 (page 1-11).
In ptc/02-01-01, the latest (?) compendium of predefined code for the IDL to Java mapping, the enumerations values captured in org.omg.CORBA.SetOverrideType are SET_OVERRIDE and ADD. The correct values are SET_OVERRIDE and ADD_OVERRIDE.
https://www.omg.org/docs/formal/02-08-05.pdf section 1.21.3 IDLEntity inclides the Serializable interface, but if an IDLEntity has a union, it will result in Holder classes (i.e. FloatHolder) which do not implement the Serializable interface. This results in NotSerializable exceptions being created when trying to use such objects with java serialization. The quick fix would be to specify that "public interface Streamable" should extend java.io.Serializable, since the holder classes extend from that as well.
The specification does not provide mapping descriptions for Home and Event IDL definitions (already part of CORBA 3.0) or Component (new in CORBA 3.1).