JBoss开发Web Service

    技术2022-05-11  72

    JBoss开发Web Service

    作者:kongxx

    配置

    使用JBoss版本 3.2.3

    JBoss.Net是用来提供Web Service的模块,建立在ApacheAxis项目之上。通常我们使用的“defaultserver中不包括JBoss.Net服务,而是包含在“allserver中。因此如果需要使用Web Service则需要使用“allserver,或者新建一个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 archiveWSR-来开发和部署Web ServiceWSR其实就是一种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,出现以下页面:

    其中已经包含了HelloWorldWeb 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

      表明 Web Service 运行正确。

     

    最新回复(0)