GlassFish and Vista - Interoperable out-of-the-box
First, lets deploy a service on GlassFish and invoke it using a client on Vista.
- Using screencast WS#1, I developed a trivial Web service using NetBeans IDE and deployed on GlassFish.
- On Vista machine, I generated the client-side artifacts using the command:
svcutil /config:Client.exe.config http://129.145.133.129:8080/WebApplication11/NewWebServiceService?wsdl - Then I coded the client code to invoke the service endpoint as:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
NewWebServiceClient client = new NewWebServiceClient();
string response = client.sayHello("Duke");
Console.WriteLine("Response from WSIT endpoint: " + response);
}
}
} - Next step is to compile the client code using the command:
csc.exe /r:"C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.ServiceModel.dll"
/r:"C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\System.Runtime.Serialization.dll"
Client.cs AddNumbersImplService.cs
I wonder if there is a way by whichcsc.execompiler can be made smarter to recognize WCF assemblies by default. But for now, I need to explicitly specify the assemblies during compilation otherwise the compiler throws bunch of errors like:
NewWebServiceService.cs(100,63): error CS0234: The type or namespace name 'ServiceModel' does not exist in the namespace 'System' (are you missing an assembly reference?) - After a successful compilation, invoking the client shows the result:
Response from WSIT endpoint: Hello Duke
Now let's deploy a similar Web service on Vista and invoke it using GlassFish.
- There are multiple ways a WCF Web service can be created from scratch but
I find the following steps easiest. Create service endpoint
service.svcas:
<%@ServiceHost language=c# Debug="true" Service="WCFEndpoint.Hello" %>
using System.ServiceModel;
namespace WCFEndpoint
{
[ServiceContract]
public interface IHello
{
[OperationContract]
string sayHello(string name);
}
public class Hello : IHello
{
public string sayHello(string name)
{
return "Hello " + name;
}
}
} - In the same directory create
Web.configas:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MetadataBehavior" name="WCFEndpoint.Hello">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
name="Hello" contract="WCFEndpoint.IHello" />
</service>
</services>
</system.serviceModel>
</configuration> - I installed IIS after installing Vista so WCF extensions need to be explicitly registered as shown here.
- Create a virtual directory, say
wsit, in IIS mapping to the directory whereservice.svcandWeb.configare present. You should now see the default WCF/IIS page as shown here. The service endpoint now should be hosted athttp://localhost/wsit/service.svc. - Using screencast #WS2, create a JAX-WS client to invoke the Web service.
This is an example of a trivial interoperable Web service between GlassFish M4 and Vista but the key fact is that, as a developer, this is provided as out-of-the-box experience. No extra tweaks or no special configurations required.
I plan to build upon this Web service by adding enterprise Web services features such as Reliable Messaging, Security etc. and show how WSIT enables interoperability with WCF.
Technorati: WSIT Web Services Interoperability GlassFish Vista
- Login or register to post comments
- Printer-friendly version
- arungupta's blog
- 900 reads





