JBoss 4.0 中使用web service

原创 2005年05月28日 14:32:00

大致过程

1. 安装Jboss
2. 将webservice endpoint当成servlet
3. 写一个远端的interface
4. 在eclipse中配置一个external tool:wscompile
4. 写一个config.xml, 然后用JWSDP的JAXRPC中的wscompile生成mapping.xml和wsdl
5. 必须存在4个文件:web.xml,webservices.xml,mapping.xml和.wsdl
6. webservices 中的port name 要和.wsdl中的一致
7. 使用lomboz或jbossIDE deploy

详细实例:

1. create a class

package service;


public class Hello {
 public boolean helloDancy(String hello){
  System.out.println(hello);
  return true;
 }

}

2. create corresponding remote interface

package remote;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface HelloRemote extends Remote {
 public boolean helloDancy(String hello) throws RemoteException;
}

3. create web.xml in WEB-INF folder

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <servlet>
  <servlet-name>helloServlet</servlet-name>
  <servlet-class>service.Hello</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>helloServlet</servlet-name>
  <url-pattern>/hello</url-pattern>
 </servlet-mapping>
</web-app>

4. create config.xml 

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
 <service name="helloservice"
  targetNamespace="/hello"
  typeNamespace="/hello/types"
        packageName="service">
  <interface name="remote.HelloRemote" />
 </service>
</configuration>

5. create folder wsdl in WEB-INF/ and run wscompile from jaxrpc folder in sun's jwsdp1.5 package

  wscompile -cp output/classes -gen:server -f:documentliteral -mapping jaxrpc-mapping.xml -keep config.xml

-keep: keep the generated source file

6. After executing wscompile.bat, a mapping.xml and helloservice.wsdl are generated

7. create webservice.xml

<?xml version="1.0" encoding="UTF-8"?>

<webservices xmlns="http://java.sun.com/xml/ns/j2ee
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd" version="1.1">
 
 <webservice-description>
  <webservice-description-name>hello world</webservice-description-name>
  <wsdl-file>WEB-INF/wsdl/helloservice.wsdl</wsdl-file>
        <jaxrpc-mapping-file>WEB-INF/mapping.xml</jaxrpc-mapping-file>
        <port-component>
            <port-component-name>hello-dancy</port-component-name>
            <wsdl-port>HelloRemotePort</wsdl-port>
            <service-endpoint-interface>remote.HelloRemote</service-endpoint-interface>
            <service-impl-bean>
                <servlet-link>helloServlet</servlet-link>
            </service-impl-bean>
        </port-component>
 </webservice-description>
</webservices>

8. create hello.war and deploy it to jboss4.0.1

9. create test client

public void testHelloDancy() {
  try{
   String urlstr   = "http://w20251-01:8080/hellows/hello?wsdl";
        
         java.net.URL url =  new java.net.URL(urlstr);

         String ns        = "/hello";
         QName  qname     = new QName(ns, "Helloservice");
         QName  port      = new QName(ns, "HelloRemotePort");
         QName  operation = new QName(ns, "helloDancy");

         Service service = new Service();
         Call call    = (Call)service.createCall();

            call.setTargetEndpointAddress( url );
            call.setOperationName( operation );
            call.addParameter( "String_1", XMLType.XSD_BASE64, ParameterMode.IN);
           
            call.setReturnType( XMLType.XSD_BOOLEAN);
         Boolean ret = (Boolean)call.invoke(new Object[]{"hello, Dancy".getBytes()});

  } catch(Exception e){
   e.printStackTrace();
  }
  
  
 }

10. set the classpath to lead to jars in axis's lib folder

11. customized object which involve byte[] as the input parameter
  client code:
 
   public void testHelloDancy() {
  try{
   String urlstr   = "http://w20251-01:8080/hellows/hello?wsdl";
        
         java.net.URL url =  new java.net.URL(urlstr);

         String ns        = "/hello";
         QName  qname     = new QName(ns, "Helloservice");
         QName  port      = new QName(ns, "HelloRemotePort");
         QName  operation = new QName(ns, "helloDancy");

         Service service = new Service();
         Call call    = (Call)service.createCall();
         QName    qn      = new QName( "/hello/types", "Dto" ); //refer to .wsdd
         call.registerTypeMapping(service.Dto.class, qn,
                       new org.apache.axis.encoding.ser.BeanSerializerFactory(service.Dto.class, qn),       
                       new org.apache.axis.encoding.ser.BeanDeserializerFactory(service.Dto.class, qn));       

            call.setTargetEndpointAddress( url );
            call.setOperationName( operation );
            call.addParameter( "arg0", qn, ParameterMode.IN);
           
            call.setReturnType( XMLType.XSD_BOOLEAN);
            service.Dto dto = new Dto();
            dto.setParam("hello, Dancy".getBytes());
         Boolean ret = (Boolean)call.invoke(new Object[]{dto});

  } catch(Exception e){
   e.printStackTrace();
  }


JBoss开发Web Service [原创]

JBoss开发Web Service作者:kongxx配置使用JBoss版本3.2.3。JBoss.Net是用来提供Web Service的模块,建立在Apache的Axis项目之上。通常我们使用的“...
  • kongxx
  • kongxx
  • 2004年07月12日 17:39
  • 8396

JBOSS下Web 服务(Web Service)开发步骤

一.开发一个JSR-181 POJO Endpoint的Web Service 应遵守下面几个步骤:1> 建立一个POJO endpointimport javax.jws.WebMethod;imp...
  • pengchua
  • pengchua
  • 2008年07月25日 12:30
  • 9012

springMVC项目在jboss7中配置应用自己的log4j

Jboss7默认采用容器自己的log4j module,应用自己配置的log4j不起作用,需要应用做一些设置: 以springMVC项目为例: 1> 在WEB-INF下新建文件jboss-depl...
  • sundongsdu
  • sundongsdu
  • 2013年07月17日 11:19
  • 3195

JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程

概述JBossWeb 是JBoss 中的 Web 容器,他是对 Tomcat 的封装,本文以 Http 连接器为例,简单说明 JBossWeb/Tomcat 初始化连接器和处理 Http 请求过程 。...
  • kylinsoong
  • kylinsoong
  • 2014年05月24日 17:28
  • 2838

【JBoss】4. 配置JBoss Web服务器

JBoss Web服务器建立在Apache Tomcat 6.0的基础上,结合了Tomcat的多功能性和Apache HTTP服务器的速度。 配置URL路径 针对客户端传来的一个URL(协议 :...
  • vking_wang
  • vking_wang
  • 2013年05月07日 16:09
  • 4199

使用Seam Framework + JBoss 5.0 开发第一个Web应用 - 简单投票程序

Seam这个单词的本意是缝合、连接,因而,Seam的作用即是把Java EE 规范里的JSF 和 EJB技术完美融合在一起,免去了很多胶合代码,并增强了JSF 和 EJB的很多功能。Seam的设计目标...
  • tracker_w
  • tracker_w
  • 2013年08月24日 18:19
  • 1975

JBoss开发Web Service

JBoss开发Web Service作者:kongxx配置使用JBoss版本3.2.3。JBoss.Net是用来提供Web Service的模块,建立在Apache的Axis项目之上。通常我们使用的“...
  • tuwen
  • tuwen
  • 2007年09月30日 11:39
  • 1051

JBoss 5.1.0.GA启动时报错

最近忙里抽空想研究下EJB3,决定采用JBOSS作为EJB容器。兴冲冲地下载了一个最新版本,解压、配置JBOSS_HOME和path,直接进入jboss的bin目录,双击“run.bat”。结果郁闷的...
  • lhlbibian
  • lhlbibian
  • 2009年07月08日 17:01
  • 4425

JBOSS简易安装部署文档

1、Jdk 【jdk-7u55-linux-x64.tar.gz】 3 1.1 解压、安装 3 1.2 配置环境变量 3 1.3 验证安装 4 2、Jboss【jboss-5.1.0.GA.z...
  • Shen_Guo
  • Shen_Guo
  • 2015年09月11日 20:08
  • 1093

jboss web安装

jboss web采用tomcat作为基础进行了优化,默认增加了apr功能,提高并发性能。安装和部署流程同tomcat。在安装前需安装jdk1.6及以上版本。   1.下载最新的jboss web...
  • yaonianlong
  • yaonianlong
  • 2014年04月15日 13:40
  • 908
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JBoss 4.0 中使用web service
举报原因:
原因补充:

(最多只允许输入30个字)