we are evaluating OpenESB for a project we are busy with. I'm new to the world of opensource and OpenESB. The OpenESB experience has so far been pretty good, and I was amazed at just how powerfull OpenESB is, however I've run into a issue and I'm really stuck at the following.
We have an application server hosting GlassFish v2.2. This machine is exposed to the internet through a MS TMG Firewall. I need to implement a very specific WSDL interface to allow us to provide a specific service to a specific consumer of this WSDL. The WSDL is fairly complex and imports a few XSDs. We have a specific host name we need to use, lets call it myservices.portal.com.au. We have a DNS entry which points this hostname to our application server.
So the WSDL we expose is available on http://hostname/<mywsdlname>?wsdl (example) by using a HTTP BC. This WSDL is a entry point to a BPEL process. Everything works except that when I deploy my composite application it overwrites the schemalocation path with the FQDN of the server, which is ok, except that the server is not exposed to the internet and hence the import path for the xsd is not available to the consuming application.
So currently in the WSDL it says, <xs:import namespace="http://<something>/edais/bm/AcceptCreateApplicationTransaction.msg.2.3.0r2" schemaLocation="schema.xsd"/>, but when I look at the WSDL after it has been deployed, it added the FQDN of the server in the schemalocation <xs:import namespace="http://<something>/edais/bm/AcceptCreateApplicationTransaction.msg.2.3.0r2" schemaLocation="http://<servername.FQDN>/CompositeApp1-sun-http-binding/BpelModule1/AcceptCreateApplicationTransaction.msg.2.3.0r2.xsd" /> .
The consuming app then cant access the schema, because that server is not exposed to the internet. The server is only accessble on the host name. I really need to make it add the host name instead of the actual server name to the schemalocation attribute. So I need it to be <xs:import namespace="http://<something>/edais/bm/AcceptCreateApplicationTransaction.msg.2.3.0r2" schemaLocation="http://hostname/CompositeApp1-sun-http-binding/BpelModule1/AcceptCreateApplicationTransaction.msg.2.3.0r2.xsd" /> .
Is this possible ? and could anyone maybe give me a nudge in the right direction. I've spend the whole day on this and cant seem to work it out.
Yes I think I've tried that, we need to implement a wsdl endpoint that was provides to us. We need to implement this interface so that we can get a specific level of conformance. So in my bpel project I added a external WSDL reference, and pointed that to a wsdl on the server. I've also updated the soap:address in that wsdl to reflect the hostname. I also added my hostname to the "Allowed Hostname" property in th http BC. I implemented a workaround by exposing the actual server through the firewall using the server name. This is obviously non ideal and only a temp workaround.
1.WCF hosted on IIS
2.Self Assigned SSL
3.WCF Basic Profile with TransportWithMessageCredential i.e on top of SSL security, we wanted an additional username and password cred to be provided by the client.
when generated from a client approval site, I was getting
https://myservername/Service.svc instead of
Solution : It all in the config file. This is my setting
Enjoy...by the way incase any one was wondering..it took me four days to workout this.... long time huh....so if you are spending a long time with this don't worry!!!!