Yep. I know its hard to believe! But then who would have believed Microsoft would have an Open Source vendor at a TechEd keynote.
Ted asks "what it will be like when the first MS project shows up at the Apache Incubator..."
I'm asking what it means when Oracle (through BEA), Yahoo, Google and IBM have Apache projects that they have incubated and use, HP and Microsoft are sponsors? It certainly means Marc is wrong about the relevancy of Apache.
Saturday, 26 July 2008
Monday, 14 July 2008
Mashup IM
Yumani Ranaweera has written an excellent article on mashing up Instant Messaging (IM) with the WSO2 Mashup Server.
Saturday, 12 July 2008
How to debug async responses in Axis2
In a dual-channel web services scenario (using WS-Addressing), its often hard to debug the responses, because the client opens a random URL and tells the server to send messages there. So even if you are sending the requests via a TCP monitor, such as TCPMON, the responses end up going direct.
Charitha has posted a blog entry on how to debug the responses. Here is another approach.
The problem is quite hard to describe without a diagram, and since its still Saturday morning I'm not up to graphics. Here is my attempt to describe without a diagram.
In a normal HTTP flow, its fairly easy to capture the messages. There are two options:
Firstly, the reverse proxy doesn't work with .NET. In the reverse proxy model, you are fooling the client into thinking the service is really hosted at port 8081. With WS-Addressing the address is not just used at the HTTP transport level, but also encoded into the WS-A headers. Now Axis2 is a little bit looser about checking WS-A headers, and ignores the host/port. But .NET validates the complete URL and will reject messages with the wrong host or port.
Secondly, the proxy option I propose can be used with any client, because you simply tell the server to send all asynchronous responses through the proxy.
Ok, enough blather, what do you need to do?
How to debug the return half of an async interaction.
1. Basically you need to setup a proxy to capture the responses.
2. Choose a port you aren’t already using (e.g. 999) and start tcpmon in Proxy mode
on that port
a. You can do this with the command line: tcpmon 999
b. Or through the TCPMON admin screen
3. Now edit the SERVER’s axis2.xml
4. You can read about this here: http://ws.apache.org/axis2/1_4/http-transport.html
5. Edit the Axis2.xml config to add the PROXY parameter:
<!-- ======================================= -->
<!-- Parameters -->
<!-- ======================================= -->
<parameter name="Proxy">
<Configuration>
<proxyhost>localhost</proxyhost>
<proxyport>999</proxyport>
</configuration>
</parameter>
6. Now all the responses (which are initiated by the server) will go through the
proxy
I suggest you try both my approach and Charitha's. I think there are going to be situations where each are more useful. I also want to thank Charitha for prompting me to blog my approach.
Charitha has posted a blog entry on how to debug the responses. Here is another approach.
The problem is quite hard to describe without a diagram, and since its still Saturday morning I'm not up to graphics. Here is my attempt to describe without a diagram.
In a normal HTTP flow, its fairly easy to capture the messages. There are two options:
- Set up a (forward) HTTP proxy, and configure your client to use that proxy. This means that any request the client sends will go via the HTTP proxy, and the request will contain the real full address of the target HTTP endpoint.
So instead of the HTTP normal request:
POST /axis2/services/blah HTTP/1.1
you get:
POST http://server.com/axis2/services/blah HTTP/1.1
The result is that the proxy looks at the request and uses the full URL to pass the message on. - Set up a Reverse HTTP Proxy, and redirect the request to this address. In this model the reverse proxy listens on one port and sends everything to another host/port. So for example, anything that comes into port 8081 is sent to localhost:8080.
Firstly, the reverse proxy doesn't work with .NET. In the reverse proxy model, you are fooling the client into thinking the service is really hosted at port 8081. With WS-Addressing the address is not just used at the HTTP transport level, but also encoded into the WS-A headers. Now Axis2 is a little bit looser about checking WS-A headers, and ignores the host/port. But .NET validates the complete URL and will reject messages with the wrong
Secondly, the proxy option I propose can be used with any client, because you simply tell the server to send all asynchronous responses through the proxy.
Ok, enough blather, what do you need to do?
How to debug the return half of an async interaction.
1. Basically you need to setup a proxy to capture the responses.
2. Choose a port you aren’t already using (e.g. 999) and start tcpmon in Proxy mode
on that port
a. You can do this with the command line: tcpmon 999
b. Or through the TCPMON admin screen
3. Now edit the SERVER’s axis2.xml
4. You can read about this here: http://ws.apache.org/axis2/1_4/http-transport.html
5. Edit the Axis2.xml config to add the PROXY parameter:
<!-- ======================================= -->
<!-- Parameters -->
<!-- ======================================= -->
<parameter name="Proxy">
<Configuration>
<proxyhost>localhost</proxyhost>
<proxyport>999</proxyport>
</parameter>
6. Now all the responses (which are initiated by the server) will go through the
proxy
I suggest you try both my approach and Charitha's. I think there are going to be situations where each are more useful. I also want to thank Charitha for prompting me to blog my approach.
Friday, 11 July 2008
My blog is my OpenID
Google does something else cool: my blog (http://pzf.fremantle.org) is now my OpenID. I knew Google was enabling OpenID, but I'm really pleased they've done it via my custom blog ID, based on my own domain name. Sweet.
Update: Guy Crets has pointed out the announcement. But what was cooler than the announcement was I found out by accident. I was commenting on Sam Ruby's blog and it automatically used my blog address as my OpenID. I love it when stuff just works.
Update: Guy Crets has pointed out the announcement. But what was cooler than the announcement was I found out by accident. I was commenting on Sam Ruby's blog and it automatically used my blog address as my OpenID. I love it when stuff just works.
Thursday, 10 July 2008
VirtualBox seamless
I tried VirtualBox a while back before Sun bought it, and I thought it looked good, but then I ended up re-installing Windows XP and never got round to re-installing VirtualBox, but then I saw Mark Baker's tweet about the seamless mode and I thought I'd try it again.
It took me about an hour - including downloads - to get VirtualBox, Ubuntu and the "Guest Additions" running. Once you have the guest additions running, it adds a video and mouse driver so that you can pretend you have both OSes running together. I have my Ubuntu task bar on the right, and my Windows one on the bottom. Just to demonstrate I have the Ubuntu terminal window and the Windows Control Panel both up. Now that's what I'm talking about.
Wednesday, 9 July 2008
Handling codegen smartly
Nice blog post from an Axis2 user on keeping the codegen and their own code neatly separated.
Friday, 4 July 2008
Open Registry Repository project
Following on from some previous blog posts such as:
http://code.google.com/p/open-registry-repository/
This is a formal invitation to anyone who wants to get involved to join in. If you want to join, just send me email to pzfreo AT gmail DOT com, giving me your Google Account email, and I will add you.
- http://netzooid.com/blog/2008/07/01/open-repository-api
- http://glendaniels.blogspot.com/2008/07/open-repositories-and-app-patterns.html
http://code.google.com/p/open-registry-repository/
This is a formal invitation to anyone who wants to get involved to join in. If you want to join, just send me email to pzfreo AT gmail DOT com, giving me your Google Account email, and I will add you.
Thursday, 3 July 2008
Open Source?
I'm very confused. I was listening to Dave Rosenberg on "why Apache License is bad for Open Source business", and I heard Dave say (talking about the add-ons that you get with Mule EE):
Of course I'm not a paying Mule customer, so I don't get the special "paid for" Open Source, so its hard to evaluate. I can't actually find the Mule EE license agreement on the website, but there is an evaluation license agreement that makes interesting reading.
I think we - especially founders of Open Source companies - have a pretty clear idea of what Open Source is. If you don't, then take a read of the definition. A few really minor points spring to mind:
P.S. If anyone has the Mule Master Subscription Agreement, I'd love to see a copy.
"Ours are not proprietary - ours are just not available in the community version. They are Open Source code: When you pay, and everything, or you become a subscriber, or whatever else, we don't actually keep anything closed." [About 6:30 into the podcast]So the Mule EE extensions are "Open Source"?
Of course I'm not a paying Mule customer, so I don't get the special "paid for" Open Source, so its hard to evaluate. I can't actually find the Mule EE license agreement on the website, but there is an evaluation license agreement that makes interesting reading.
I think we - especially founders of Open Source companies - have a pretty clear idea of what Open Source is. If you don't, then take a read of the definition. A few really minor points spring to mind:
- The license shall not require a royalty or other fee for such sale. This sentence from the Open Source definition seems to blow the whole "paid for Open Source" concept out of the water.
- The license must not restrict anyone from making use of the program in a specific field of endeavor. I haven't seen the license that paying customers get, but the evaluation license says: "you shall not ... publicly disseminate performance information or analysis (including, without limitation, benchmarks) from any source relating to the Software. " Seems like a pretty solid field of endevour restriction.
- The program must include source code, and must allow distribution in source code as well as compiled form. Guess what the evaluation license says: "You shall not... (c) modify, decompile, disassemble or otherwise reverse engineer the Software or attempt to reconstruct or discover any source code". [My bolding] Oh. So its open source, but I'm not allowed to look at the code? That's cool. I like that. I used to do Philosophy... it reminds me of that.
P.S. If anyone has the Mule Master Subscription Agreement, I'd love to see a copy.
Tuesday, 1 July 2008
Subscribe to:
Posts (Atom)