首页 > 软件开发 > 用jboss 怎么开发web service ?

快速发布【软件开发】相关需求,专业顾问为您服务 快速发布

用此手机号发布,您还可以点击 更换

发布需求
请输入正确的手机号
请输入正确的验证码

您是不是要找:

  • 专家问诊,提供专业建议
  • 急速响应,体验省心
  • 根据需求灵活定制解决方案

用jboss 怎么开发web service ?

标签:jboss web service 开发 2017-8-18 作者:open_tq54_niwe

  简介:J**A EE为webService提供了两种不同的编程模式,E**容器模式及web容器模式


  一、E**容器模式:在E**项目的session bean类中实现


  1.例子


  @Stateless


  @Remote(HelloWorld.class)


  @WebService


  public class HelloWorldImpl implements HelloWorld {


  @Override


  @WebMethod


  public String sayHello(String name) {


  // TODO Auto-generated method stub


  return name;


  }


  public String login(String name,String password){


  return name;


  }


  }


  打开://localhost:8080/jbossws然后单击View a list of deployed service就可以看到部署的WSDL


  这样就简单的部署一个webService了


  2.WSDL组成元素


  类型Types:定义了web服务所使用的数据类型集合。


  消息message:通讯数据结构的抽象类型定义。


  操作Operation:对服务中所支持的操作的抽象描述。


  端口类型PortType:对于某个端口类型所支持操作的抽象集合。


  绑定Binding:包含了如何将端口类型转换变成为具体的数据表示细节。


  端口Port:通过为绑定指定一个地址来定义一个服务访问端点。


  服务Service:描述的是一个具体的被部署的WEB服务提供的所有访问入口。


  3.JAX-WS注释控制生成WSDL内容


  注释的例子如下:


  @Stateless


  @Remote(HelloWorld.class)


  @WebService(targetNamespace="//ws.foshanshop.com",name="HelloWorld",serviceName="HelloWorldService")


  @SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=Use.LITERAL,parameterStyle=ParameterStyle.WRAPPED)


  public class HelloWorldImpl implements HelloWorld {


  @Override


  @WebMethod(operationName="SayHello",action="")


  @WebResult(name="result")


  public String sayHello(@WebParam(name="name")String name) {


  // TODO Auto-generated method stub


  return name;


  }


  @WebMethod


  public String login(String name,String password){


  return name;


  }


  }


  上述的注释说明如下:


  3.1@javax.jws.WebService注释


  定义:


  @Target({TYPE}@Retention(value=RetentionPolicy.RUNTIME)


  public @interface WebService{


  String name() default "";


  String targetNamespace() default "";


  String serviceName() default "";


  String wsdlLocation() default "";


  String portName() default "";


  String endpointInterface() default "";


  }


  name()属性:指定接口的名字


  targetNamespace()属性:指定命名空间


  wsdlLocation()属性:定义了webservice的WSDL文件URL地址


  portName()属性:指定了你所使用的WSDL端口


  endpontInterface()属性:通过指定端口接口的方式来实现一个web Service


  3.2@javax.jws.soap.SOAPBinding注释


  use()属性:指定SOAP的编码使用方式。Use.LITERAL


  style()属性:指定WSDL SOAP绑定的方式,有DOCUMENT和RPC两个值。默认值时DOCUMENT:style=SOAPBinding.Style.DOCUMENT


  parameterStyle()属性:指定参数的样式。默认值为WRAPPED。


  3.3@javax.jws.WebMethod注释


  @WebMethod注释的办法作为Web Service办法对外暴露。


  operationName()属性:用来定义被标注的办法所实现的WSDL operation。如果没有指定该属性,则默认会使用java的办法名称


  action()属性:用来设置与该operation相对应的提示


  3.4@javax.jws.WebParam注释


  @WebParam注释控制办法参数在WSDL中的内容


  name()属性:当web service采用的是RPC/Literal样式,则name()属性被设为wsdl:param的名称


  3.5@javax.jws.WebResult注释


  该注释控制返回值在WSDL中的内容。


  name():返回办法名称  默认是WSDL的操作名称跟Response。


  3.6@javax.jws.Oneway注释


  该注释用来声明,相应的Web Service操作将返回一个空消息


  二、WEB容器模式


  开发步骤如下:


  建立一个POJO端点--在web.xml中--------将这个POJO端点配置成一个Servlet-----------将这个POJO端点打包成一个应用


  例子:


  import javax.jws.WebMethod;


  import javax.jws.WebService;


  @WebService


  public class WebServiceTest {


  @WebMethod


  public String SayHello(String name){


  return name+"说:你好!世界!";


  }


  }


  web.xml中


  


  HelloService


  com.havy.webServlet.WebServiceTest


  


  


  HelloService


  /hello


  


  这样就部署成功一个webService了


  三、Web Service的客户端调用


  1.在J2SE或者其他的web中调用WEB SERVICE


  1.1在应用程序的类路径下放入JAX-WS的jar文件,对于web应用来说,应放入WEB-INF/lib目录。当有某些应用使用JAX-WS


  版本高于2.0时,就要升级JDK的版本,如下:把jaxws-api.jar和jaxb-api.jar两个文件copy到JDK6/jre/lib/endorsed目录下


  1.2利用WebService客户端工具生成辅助类


  1.3借助辅助类调用webService


  使用wsimport工具的ant任务类生成代码:build.xml代码如下:


  


  


  


  


  


  


  


  


  


  


  


  


  sourcedestdir="${src.dir}" package="com.longsun.ws.client" keep="true"


  verbose="true" destdir="${app.dir}/bin"/>


  


  


  注意:该文件放在工程目录的根目录下,然后运行后,刷新项目,即可发现生成的辅助类。


  ant文件说明:


  节点说明com.sun.tools.ws.ant.WsImport任务标签,标签名为wsimport


  wsdl属性为Web服务的位置


  package属性为生成代码使用的包名


  sourcedestdir属性为生成代码存放的目录


  keep属性为指定是否生成文件


  verbose属性指定是否显示执行细节


  生成辅助类后,就可以调用该webService了


  如:


  package com.longsun.webService;


  import com.longsun.ws.client.HelloWorld;


  import com.longsun.ws.client.HelloWorldService;


  public class TestHelloWorld {


  public static void main(String[] args){


  try{


  HelloWorldService service=new HelloWorldService();


  HelloWorld helloWold=service.getHelloWorldPort();


  String result=helloWold.sayHello("havy");


  System.out.println(result);


  result=helloWold.login("kang", "123456");


  System.out.println(result);


  }catch(Exception e){


  e.printStackTrace();


  }


  }


  }


  2.在E**中调用webService


  在E**容器中一般通过注入注释来使用webService,开发步骤如下:


  利用工具生成辅助类-------使用注释注入服务类或服务端口


  2.1为了使webService的版本和jboss相同,即使用**OSS带的wsconsume工具生成辅助类


  build.xml代码如下:


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  


  sourcedestdir="${src.dir}" package="com.longsun.ws.client" keep="true"


  verbose="true" destdir="${basedir}/bin"/>


  


  


  现在在session Bean中调用Web Service的代码如下:


  @Stateless


  @Remote(WSClient.class)


  public class WSClientImpl implements WSClient{


  @WebServiceRef(wsdlLocation="//127.0.0.1:8080/toolsforE**/HelloWorldImpl?wsdl")


  private HelloWorldService service;


  public String invokeWs(String name){


  HelloWorld hello=service.getHelloWorldPort();


  return hello.sayHello(name);


  }


  }


  @WebServiceRef注释来直接引用服务类或服务的端口接点,其定义如下:


  package javax.xml.ws;


  @Target({TYPE,METHOD,FIELD})@Retention(RUNTIME)


  public @interface WebServiceRef{


  String name() default "";


  String wsdlLocation() default "";


  Class type default Object.class;


  Class value default Object.class;


  String mappedName() default "";


  };


  name()属性:定义了webService绑定到JNDI ENC的名称


  wsdlLocation()属性:指定了WSDL文件的位置


  mappedName()属性:指定通过厂商专用的WebSercie全局JNDI引用服务


  Type()和value()属性:用来指定是否要将服务类或服务端口注入到某个数据成员或成员属性中。为了注入一个


  服务的端口接口,value()必须设置为服务类,如:


  @WebServiceRef(HelloWorldService.class)


  private HelloWorld hellWorld;


  上面就是小编为大家整理的关于jboss web service 开发的文章,希望对大家有帮助。在实际的操作过程中大家可以根据实际情况进行灵活的调整。了解更多咨询请关注猪八戒网。


最新文章推荐

软件开发暂无最新文章查看全部推荐文章>

推荐人才