spring-projects/spring-net

spring.messaging.ems not compatible for tibco 8.3.0 version

pa-vishal opened this issue · 2 comments

Hi,
I am using spring and spring.messaging.ems listeners for xml configuration for tibco communication. This was working fine until I upgraded tibco version. I am now getting runtime exception that says "cannot load assembly" because spring is looking for tibco 1.0.0 assembly with which spring was compiled. I am using spring 1.3. I think all the versions of spring are compiled with tibco version 1.0
Is there a way I can use tibco 8.3 version with spring?
One solution I believe is to get this source code and update tibco dll reference and compile and use the new output?

Yes, recompiling the sources against the new TIBCO binaries is certainly one option. However if the only 'public' difference between the older and newer TIBCO binaries is their version number (e.g., there haven't been any breaking changes in the public API exposed by the TIBCO libraries), I'd probably recommend that you first attempt to solve this by just adding a <bindingRedirect> to your app.config file.

See https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx for more info on this approach.

As mentioned, this will only work if there aren't any breaking changes in the 'public' surface area of the TIBCO binaries between these two versions, but of course if there were breaking changes then even compiling the SPRNET source against the new binaries wouldn't work since you'd get compilation errors rather than the runtime errors you're experiencing now (meaning that to support the later version of TIBCO we'd have to adjust the SPRNET source and release separate support for the new version of TIBCO).

Let us know how/if this approach works for you, and good luck!

Thanks Steve, this works!
Luckily, the TIBCO interfaces have not changed in newer version and just adding a 'binding redirection' config solves the problem.

For the benefit of the people who will hit by same problem, here is what I added to the app.config -

<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="TIBCO.EMS" publicKeyToken="5b83db8ff05c64ba" culture="neutral"/> <bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.830.14" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>