[jacorb-developer] Should jacorb-omgapi be fed into the compiler?
Timothy Astle
timothy.astle at caris.com
Mon Jul 6 21:59:38 CEST 2015
I observed something odd today and I'm not sure what to make of it
(mostly because it was done this way for such a long time), so I'm going
to do my best to describe what I seen in hope of understanding this
better. I'm going to omit versions and configuration details for now,
just so I can make sure my logic is correct.
Today when using Eclipse, I started seeing a compilation error for a
class that extends a CORBA stub. This stub extends the
org.omg.CORBA.Object. The eclipse compiler complained that my stub
implementation was missing implementations for the following methods:
* _get_client_policy(...)
* _validate_connection(...)
* etc.
Basically, the methods outlined in this conversation, which relate to a
CORBA 3.1 draft:
http://www.omg.org/issues/issue5782.txt
I had a colleague use Eclipse and click through to his implementation
(which didn't have problems) and he had Oracle comments all over the
place. So his Object interface was from Oracle (JDK), mine was from the
3.6.1 jacorb-omgapi bundle.
The build using Maven (javac) never hits what I observed in Eclipse, but
I'm not convinced it is correct, even though it "works". I would have
expected that we would have been using the org.omg.CORBA.Object from
JacORB. So during compilation, I would have expected it to fail the
same as I'm now seeing in Eclipse.
So I started digging about our configuration and looking at examples
online for any hints so see if my suspicions were right or wrong.
I don't believe the compiler plays a role in this particular problem
because the generated code appears to be fine, but I'll show what I have:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>idlj-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<compiler>jacorb</compiler>
<sources>
<source>
<includes>
<include>**/example.idl</include>
</includes>
<additionalArguments>
<additionalArgument>-D_PRE_3_0_COMPILER_</additionalArgument>
<additionalArgument>-DJACORB</additionalArgument>
</additionalArguments>
<compatible>false</compatible>
<emitStubs>true</emitStubs>
<emitSkeletons>false</emitSkeletons>
</source>
</sources>
<includeDirs>
<includeDir>src/main/idl/jacorb</includeDir>
<includeDir>src/main/idl</includeDir>
</includeDirs>
<dependencies>
<dependency>
<groupId>org.jacorb</groupId>
<artifactId>jacorb-idl-compiler</artifactId>
<version>3.6.1</version>
</dependency>
</dependencies>
</configuration>
</plugin>
Since the problem seems to be compile time, I started thinking about
things like -Xbootclasspath, endorsedDirs, etc. Then I stumbled across
this:
https://github.com/JacORB/JacORB/blob/master/demo/maven/pom.xml#L57
So I'm like, "Hey, maybe I'm onto something here." I tried this:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<args>-Xlint:all</args>
<args>-Xbootclasspath/p:${settings.localRepository}/org/jacorb/jacorb-omgapi/3.6.1/jacorb-omgapi-3.6.1.jar</args>
</compilerArgs>
</configuration>
</plugin>
and sure enough, it causes errors during our Maven compilation. I
believe this is good.
The runtime configuration uses the following properties:
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
so I think the runtime configuration should continue to work okay (I
could be wrong).
Does anyone have any thoughts? Should I be setting the bootclasspath to
the compiler as I did above to cause the failure? (Or is there a better
way to do this?) Does anyone notice anything else obvious that I could
be missing in the configuration?
Thanks for your time,
Tim
More information about the jacorb-developer
mailing list