JBoss开发Web Service [原创]
JBoss开发Web Service
作者:kongxx
配置
使用JBoss版本
JBoss.Net是用来提供Web Service的模块,建立在Apache的Axis项目之上。通常我们使用的“default”server中不包括JBoss.Net服务,而是包含在“all”server中。因此如果需要使用Web Service则需要使用“all”server,或者新建一个server来提供Web Service。
在$JBOSS_HOME/server/下新建一个目录(如:kongxx),然后复制$JBOSS_HOME/all下所有文件到kongxx下,使用一下命令启动JBoss:
run –c kongxx |
待启动JBoss成功后,用浏览器访问http://192.168.0.201:8080/jboss-net/services,则会出现以下页面:
此时说明配置已经成功。
开发Web Service
JBoss引入了一种框架类型-Web Service archive(WSR)-来开发和部署Web Service。WSR其实就是一种JAR文件。
编写Java文件
创建一个Java文件并编译,
public class HelloWorld{ public String getMessage(String name){ return "Hello world , " + name ; } } |
创建描述文件
在HelloWorld.java文件所在目录下创建META-INF目录,并在META-INF目录下创建一个web-service.xml文件,内容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="HelloWorld" provider="java:RPC"> <parameter name="className" value="HelloWorld"/> <parameter name="allowedMethods" value="getMessage"/> </service> </deployment> |
创建WSR文件
进入HelloWorld.java文件和META-INF目录所在目录,运行
jar cvf HelloWorld.wsr HelloWorld.class META-INF |
此时会在目录下产生一个HelloWorld.wsr文件。
部署Web Service
复制HelloWorld.wsr文件到$BJOSS_HOME/server/kongxx/deploy/下,此时察看Jboss的控制台,会出现以下信息:
01:37:16,322 INFO [MainDeployer] Starting deployment of package: file:/usr/local/jboss3x/server/kongxx/deploy/HelloWorld.wsr 01:37:16,411 INFO [MainDeployer] Deployed package: file:/usr/local/jboss3x/server/kongxx/deploy/HelloWorld.wsr |
此时在浏览器中访问http://192.168.0.201:8080/jboss-net/services,出现以下页面:
其中已经包含了HelloWorld的Web Service,此时说明已经部署成功。
测试Web Service
Java测试
创建一个测试客户端,代码如下:
import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; public class TestClient { public static void main(String [] args) { try { String endpoint = "http://192.168.0.201:8080/jboss-net/services/HelloWorld"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName( "getMessage" ); call.addParameter( "name", XMLType.XSD_STRING, ParameterMode.IN ); call.setReturnType( XMLType.XSD_STRING ); String ret = (String) call.invoke( new Object [] { "kongxx" }); System.out.println("Result : " + ret); } catch (Exception e) { System.err.println(e.toString()); } } } |
编译并运行,输出以下结果:
Result : Hello world , kongxx |
表明Web Service运行正确。
.Net测试
新建一个项目,然后再解决方案资源管理器中项目名称,在右键弹出菜单中选中添加Web引用,如下图:
此时弹出以下窗口:
在以上窗口中的URL中输入http://192.168.0.201:8080/jboss-net/services/HelloWorld?wsdl并按转到按钮,显示以下信息:
然后按下添加引用按钮,完成引用。
添加测试代码:
WebReference.HelloWorldService service = new WebReference.HelloWorldService(); Console.WriteLine(service.getMessage("kongxx")); |
运行后输出:
Hello world , kongxx |