Idea14 生成webservices
一直为idea生成soap协议的webservices而纠结,当初做axis2的时候,用的是eclipse,用它的插件来生成。
这次做短信平台,决定要换一下,因为eclipse用axis2生成的接口,会增加很多无用的东西在WEB-INF下面。
摸索一下,招到了一些方法,这里记录下 。
配置项目
Idea中,配置项目,最常用的键,就是F4了。打开项目结构(Project Structure),其他配置好,然后在Facets中,增加一个Webservices。
下拉选项中,选择所需要的实现方式即可。我这里这次用的是JAX_WS RI 2.2,是glassfish的产品。
增加后,项目就有了WebServices的功能。
此时,会自动将下载的jar包放入工程,在web.xml中生成JAX-WS的配置信息。同时,也在WEB-INF下生成一个sun-jaxws.xml文件,不过里面目前是空白的,只有一个头。
生成服务类。
在自己的包下面,new一个webservices,然后输入自己的类名称即可,就会生成一个应用主类。例如:
@WebService()
publicclassHelloWorld{
@WebMethod
publicString sayHelloWorldFrom(String from){
String result ="Hello, world, from "+ from;
System.out.println(result);
return result;
}
publicstaticvoid main(String[] argv){
Object implementor =newHelloWorld();
String address ="http://localhost:9000/HelloWorld";
Endpoint.publish(address, implementor);
}
}
同时,在sun-jaxws.xml中,也生成了一段内容,对应刚刚生成的这个服务类。
运行该类,输入address在浏览器,可以看到服务列表,其中有一个http://localhost:9000/HelloWorld?wsdl ,即是提供为其他人的wsdl文件。
客户端验证
至此,我们可以写一个客户端,调用一下即可。具体的写法,可以参照之前本博客记录的一篇日志: JAX_WS 2.2 规范的webservices客户端实现(Axis2,Cxf)
话外篇
当使用这种方式时,有时候需要获取到客户端的ip信息,可以参照以下代码,这里以我发送短信为例:
import com.sun.net.httpserver.HttpExchange;
import com.sun.xml.ws.developer.JAXWSProperties;
import javax.annotation.Resource;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
import java.net.InetSocketAddress;
/*
* Created by wang on 2015/5/8.
*/
@WebService()
publicclassSendSms{
@Resource
WebServiceContext webServiceContext;
@WebMethod
publicString sayHelloWorldFrom(String from){
MessageContext mc = webServiceContext.getMessageContext();
HttpExchange exchange =(HttpExchange) mc.get(JAXWSProperties.HTTP_EXCHANGE);
InetSocketAddress remoteAddress = exchange.getRemoteAddress();
String remoteHost = remoteAddress.getHostName();
System.out.println("Client Host name :"+remoteHost);
String result ="Hello, world, from "+ from;
System.out.println(result);
return result+",nice work";
}
publicstaticvoid main(String[] argv){
Object implementor =newSendSms();
String address ="http://localhost:9000/SendSms";
Endpoint.publish(address, implementor);
}
}
这里不要导入错了包,以上代码,有很多个同名的包存在。
好了,所有就这些,用这种方式生成的webservices,简洁了太多,代码简洁,项目结构也简洁,很推荐这种方式。
Idea14 生成webservices的更多相关文章
- Cordys BOP 4平台开发入门实战演练——Webservices开发(0基础)
0.文章导读 本文档针对Cordys BOP-4 WS-AppServer基础功能进行验证和高速开发指导.(高级实践文档请參考兴许文档). 0.1.WS-AppServer概述 WS-AppServe ...
- WebService流行框架CXF
CXF官方网址:http://cxf.apache.org/ CXF官方网址:官网学习地址:http://cxf.apache.org/docs/index.html 官网下载cxf压缩文件: ...
- Oracle 11g数据库详解(2)
FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...
- cxf ServerFactoryBean 生成基于soap1.2的WebServices
//获得服务工厂bean ServerFactoryBean bean = new ServerFactoryBean(); HTTPTransportFactory httpTransportFac ...
- WebServices生成发布过程及常见问题的解决方法
春夏秋冬走健康之路看四季养生网 健康饮食 养生问题 母婴保健 养生小常识 3.下一步,我们需要将Myservice文件夹拷贝到C:\Inetpub\wwwroot目录下(重要).如下图所示 然后依次 ...
- .net webservices 代理类生成命令
wsdl.exe /l:cs /out:d:/WxPayment.cs http://localhost/WxPayment.asmx
- webServices与Web服务
本篇的内容在MSND中标注已是一项旧技术,而取而代之的是WCF, 那么我也放弃吧!但是这个属于Web服务的范畴,而WCF本质上也是一个Web服务来的,所以对于基础的东西还是不变的.那么这次就着重看看这 ...
- c# 动态调用.net编写的webservices接口
创建类WebServiceHelper: public class WebServiceHelper { #region 动态调用WebService动态调用地址 /// < summary&g ...
- Intellij IDEA 根据数据库自动生成pojo和hbm
新建一个项目,每次写hibernate部分,就觉得pojo和hbm.xml部分很蛋疼.今天搜索了半天,终于知道如何根据数据库自动生成了. Intellij IDEA14创建maven时并不能勾选各种支 ...
随机推荐
- UI设计工资有多高?怎么快速拿高薪?
1.UI设计工资有多高? 有人不服UI设计待遇薪资高,那么下面就来看下一线城市的最新UI设计平均薪资待遇,大家也可以打开各招聘网站查询各行业平均薪资情况,一个行业的薪资高不高行业市场决定. 待遇较高说 ...
- linux学习第四天 (Linux就该这么学)2018年11月16日
今天主要讲了 管道符,重写向与环境变量 输入输出重写向 标准输出重写向 (标准,覆盖,错误) > 将标准输出重写向到一个文件中 >> 追加到文件 2>错误输出重定向 2> ...
- apicloud模块开发知识点
1. 没有加模块的时候dex里面的包 \android\support\annotation \android\support\v4 \com\uzmap\pkg \compile 2. 不能混淆的类 ...
- 使用scrollTop返回顶部
scrollTop属性表示被隐藏在内容区域上方的像素数.元素未滚动时,scrollTop的值为0,如果元素被垂直滚动了,scrollTop的值大于0,且表示元素上方不可见内容的像素宽度 由于scrol ...
- Netsharp下微信菜单以及OAuth
一.OAuth介绍 在微信开发中,当打开一个页面是,业务场景一般会基于粉丝绑定用户信息,即页面需要基于粉丝和用户的身份处理业务逻辑. 在微信中打开一个页面有三个场景: 1.文本回复中直接包含url 2 ...
- contenteditable设置元素可编辑
需求背景 实现一个输入框,高度可以随着输入文字的增加而自动增高 有placeholder,输入为空时,显示placeholder 我们知道可以将div的contenteditable设置伪true,将 ...
- Java学习笔记:23种设计模式
设计模式(Design pattern)的定义: In software engineering, a software design pattern is a general, reusable s ...
- Linux关机操作
正确的关机流程为:sync > shutdown > reboot > halt 关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档. 例如你可以运行如 ...
- zl
https://mooc.study.163.com/course/2001281002?tid=2001392029&_trace_c_p_k2_=a1ef6cb9a64342008c8f5 ...
- 根据方法名获取方法Body Content
利用 MethodBody类的GetILAsByteArray方法可以获取到返回字节数组的MSIL的body.然后再去解析此字节数组, 可以得到MSIL,然后你再去解析MSIL,你就可以得到你想到so ...