You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Fred Preston <PR...@uk.ibm.com> on 2007/04/30 10:56:11 UTC

Re: Statically linking Windows OpenSSL in HTTPSSLChannel

Hi Wayne,
        I think the library is listed as part of the dependent libraries 
parameter in the link options.  When starting up AXIS, the library loader 
will attempt to load the dependent libraries.  The HTTPSSLChannel DLL is 
dynamically loaded from within AXIS.  The AXIS LoadLibrary function will 
use the usual Microsoft search criteria to look for dependent libraries 
using the contents of the PATH environment variable.  If you have DB2 
already up and running (using something like ODBC and SQL to connect to 
it), (hopefully on a different thread or process ;-)), then you should be 
able to change the environment path before running your client so that the 
correct OpenSSL library is found, loaded and run. As far as I know, there 
is no existing parameter that will statically link the OpenSSL libraries, 
but you can quite easily do this yourself by changing the link options. 
Both options should work.  It really just depends on your preference.

Regards,

Fred Preston.




Wayne Johnson <wd...@yahoo.com> 
27/04/2007 19:16
Please respond to
"Apache AXIS C User List" <ax...@ws.apache.org>


To
axis-c <ax...@ws.apache.org>
cc

Subject
Staticly linking Windows OpenSSL in HTTPSSLChannel






We have an interesting problem.  Our app uses both DB2 and Axis.  DB2 
automatically loads it's copy of OpenSSL's libeay32.dll.  When we attempt 
to load HTTPSSLChannel.dll, it sees DB2's libeay32.dll already loaded and 
attempts to use it.  Since they're different versions, and we have no 
control over what version DB2 is using, we're toast.

At this point, we're looking at linking Axis statically with the OpenSSL 
library (like the UNIX platforms do).  Anyone see any issues with this? 
Don't suppose there is a build parameter that does this?


--- 
Wayne Johnson,             | There are two kinds of people: Those 
3943 Penn Ave. N.          | who say to God, "Thy will be done," 
Minneapolis, MN 55412-1908 | and those to whom God says, "All right, 
(612) 522-7003             | then, have it your way." --C.S. Lewis
 Ahhh...imagining that irresistible "new car" smell?
Check out new cars at Yahoo! Autos. 






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU






Re: Statically linking Windows OpenSSL in HTTPSSLChannel

Posted by Wayne Johnson <wd...@yahoo.com>.
Thanks for the response.  I'll try changing the order in the path, not sure how DB2 will react to a newer version of OpenSSL, but technically it should work :{)>

I've got the changes needed to do the static linking.  It required a rebuild of the OpenSSL package to provide the static libraries (it's not in the default config).  It also requires some changes to buildSSLChannel.xml in AxisCPP.  

The changes I have are hardcoded and will likely need to be modified to use a build option in order for it to be included in the  product, if at all.  Should I open a Jira on this?

Index: buildSSLChannel.xml
===================================================================
--- buildSSLChannel.xml (revision 516429)
+++ buildSSLChannel.xml (working copy)
@@ -52,7 +52,7 @@
                   </defineset>
                </compiler>
                <!-- required libraries -->
-               <syslibset libs="${HTTP.SSLChannel.libs}" dir="${HTTP.SSLChannel.dir}/out32dll" if="windows"/>
+               <syslibset libs="${HTTP.SSLChannel.libs}" dir="${HTTP.SSLChannel.dir}/out32" type="static" if="windows"/>
                <syslibset libs="${HTTP.SSLChannel.libs}" dir="${HTTP.SSLChannel.dir}/lib" unless="windows"/>
                <defineset>
                   <define name="ENABLE_AXISTRACE" if="trace"/>
@@ -69,6 +69,8 @@
                           <linker refid="HP-UXLinker"/>
                <linker extends="VisualC++Linker">
                   <syslibset libs="wsock32"/>
+                  <syslibset libs="user32"/>
+                  <syslibset libs="gdi32"/>
                </linker>

                <linker refid="OS400Linker"/>

Fred Preston <PR...@uk.ibm.com> wrote:  
Hi Wayne, 
        I think the library is listed as part of the dependent libraries parameter in the link options.  When starting up AXIS, the library loader will attempt to load the dependent libraries.  The HTTPSSLChannel DLL is dynamically loaded from within AXIS.  The AXIS LoadLibrary function will use the usual Microsoft search criteria to look for dependent libraries using the contents of the PATH environment variable.  If you have DB2 already up and running (using something like ODBC and SQL to connect to it), (hopefully on a different thread or process ;-)), then you should be able to change the environment path before running your client so that the correct OpenSSL library is found, loaded and run. As far as I know, there is no existing parameter that will statically link the OpenSSL libraries, but you can quite easily do this yourself by changing the link options.  Both options should work.  It really just depends on your preference. 
 
Regards,
 
 Fred Preston.
  
 
 
   Wayne Johnson <wd...@yahoo.com>  27/04/2007 19:16    Please respond to
 "Apache AXIS C User List" <ax...@ws.apache.org>
 
 
    To
 axis-c <ax...@ws.apache.org>   cc
  
  Subject
 Staticly linking Windows OpenSSL in HTTPSSLChannel 
    

 
 
 
 
We have an interesting problem.  Our app uses both DB2 and Axis.  DB2 automatically loads it's copy of OpenSSL's libeay32.dll.  When we attempt to load HTTPSSLChannel.dll, it sees DB2's libeay32.dll already loaded and attempts to use it.  Since they're different versions, and we have no control over what version DB2 is using, we're toast.
 
 At this point, we're looking at linking Axis statically with the OpenSSL library (like the UNIX platforms do).  Anyone see any issues with this?  Don't suppose there is a build parameter that does this?
 
 
 --- 
 Wayne Johnson,             | There are two kinds of people: Those 
 3943 Penn Ave. N.          | who say to God, "Thy will be done," 
 Minneapolis, MN 55412-1908 | and those to whom God says, "All right, 
 (612) 522-7003             | then, have it your way." --C.S. Lewis   

---------------------------------
Ahhh...imagining that irresistible "new car" smell?
 Check out new cars at Yahoo! Autos.  

  

  
---------------------------------

 
  Unless stated otherwise above:
 IBM United Kingdom Limited - Registered in England and Wales with number 741598. 
 Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU 

 
  
 

 



--- 
Wayne Johnson,                         | There are two kinds of people: Those 
3943 Penn Ave. N.          | who say to God, "Thy will be done," 
Minneapolis, MN 55412-1908 | and those to whom God says, "All right, 
(612) 522-7003                         | then,  have it your way." --C.S. Lewis

       
---------------------------------
Ahhh...imagining that irresistible "new car" smell?
 Check outnew cars at Yahoo! Autos.