如何在Java中快速java项目发布到服务器WebService服务

1.前言.
& 以前只写过tomcat发布webservice,这个有点麻烦,最快最优雅的发布是直接用jdk来,这样比较能解耦.客户端也是一样.
2.直接代码.
服务器:
package com.whaty.platform.ws.
import java.net.MalformedURLE
import java.net.URL;
import javax.xml.namespace.QN
import javax.xml.ws.S
import com.whaty.platform.ws.server.IM
* @className:MyClient.java
* @Desc:访问发布的服务
* @author:lizhuang
* @createTime: 上午01:23:57
public class MyClient {
public static void main(String[] args) {
//服务WSDL Document的地址
URL url = new URL("http://localhost:7777/tudou?wsdl");
//Qnameqname是qualified name 的简写
//2.构成:由名字空间(namespace)前缀(prefix)以及冒号(:),还有一个元素名称构成
//由发布的wsdl可知namespace为http://server.ws./,
QName qname=new QName("http://server.ws./","MyServiceImplService");
Service service=Service.create(url, qname);
IMyservice ms=service.getPort(IMyservice.class);
ms.add(1, 4);
ms.minus(1, 4);
} catch (MalformedURLException e) {
e.printStackTrace();
package com.whaty.platform.ws.
import javax.jws.WebS
* @className:IMyservice.java
* @Desc:定义:SEI service endpoint interface
* @author:lizhuang
* @createTime: 上午12:57:18
//JAX-WS注解,表示java api xml for webservice。JDK自带API的XML格式的webservice
@WebService
public interface IMyservice {
int add(int a, int b);
int minus(int a, int b);
package com.whaty.platform.ws.
import javax.xml.ws.E
* @className:MyServer.java
* @Desc:发布服务
* @author:lizhuang
* @createTime: 上午01:02:39
public class MyServer {
public static void main(String[] args) {
//访问方式:http://localhost:7777/tudou?wsdl
String address="http://localhost:7777/tudou";
Endpoint.publish(address, new MyServiceImpl());
package com.whaty.platform.ws.
//endpointInterface指定接入点接口:接口必须存在
import javax.jws.WebS
@WebService(endpointInterface="com.whaty.platform.ws.server.IMyservice")
public class MyServiceImpl implements IMyservice {
public int add(int a, int b) {
System.out.println("a+b="+(a+b));
return a+b;
public int minus(int a, int b) {
System.out.println("a-b="+(a-b));
return a-b;
客户端(需要自动先生成客户端文件,这个看3所述.
import com.whaty.platform.ws.server.IM
import com.whaty.platform.ws.server.MyServiceImplS
public class MyClient2 {
public static void main(String[] args) {
MyServiceImplService myServiceImplService=new MyServiceImplService();
IMyservice msis= myServiceImplService.getMyServiceImplPort();
msis.add(1, 4);
msis.minus(1, 4);
3.如何调用?
(1)WebserviceZhujie工程直接ctrl+f12运行MyServer的main方法,则发布server.
(2)则可以验证是否发布成功.
(3)调用java自带的webservice客户端生成工具.
& cmd进入电脑的dos输入框
&&&
cd %JAVA_HOME%
wsimport -d d: -keep -verbose http://localhost:7777/tudou?wsdl
这样就在d盘生成了com为主目录的文件.
(3)把d盘com下文件都copy到eclipse的src里面,并执行MyClient2的main方法,ok!
4.运行中执行了一个加法程序,显示结果为:
本文主要参考csdn的大牛yaerfeng的原创,再次对原创致敬!
参考连接:
http://blog.csdn.net/yaerfeng/article/details/8352307
浏览: 1022640 次
来自: 深圳
wtaisi 写道wtaisi 写道|||||||||
另外内存泄漏一般也不是指计算时溢出。而是指某些对象已经不再使用 ...
Long.MAX_VALUE应该是(2^63)-1,而不是64 ...
java-lxm 写道好湿好湿好湿谢谢: )。
好湿好湿好湿
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Java6 WebService的发布 - Java教程 - 编程入门网
Java6 WebService的发布
WebService服务发布往往比较混乱,Axis2的发布形式与XFire发布方式差别很大,而Java6 Web服务的发布与Axis2、XFire的Web服务的发布方式也有着天壤之别,它们之间没有经验可以借鉴。
因此,很有必要钻研下Java6的Web服务的发布方式。
从前面两篇文章可以看出Java6对WebService的发布提供了API级别的直接支持,发布只需要一行代码就搞定了。但是作为一个服务,就需要启动,总不能每次启动都去运行一个Main方法来启动吧。
实际中Web服务的发布常常伴随着Web容器的启动而发布,而在Java6中,我们没法直接像Axis2和XFire那样直接去发布,但是可以通过变通的方法,通过Servlet来和容器绑定起来,在容器启动的时候发布服务。
下面以Tomcat为例,来实现Java6 Web服务的发布。
1、开发WebService服务
package lavasoft.
import javax.jws.WebS
* Java6开发的WebService服务端
* @author leizhimin  10:24:13
@WebService
public class Java6WS {
         /**
          * Web服务中的业务方法
          *
          * @return 一个字符串 
          */
         public String doSomething(String username) {
                 return username + & is doing something!&;
         }
2、开发发布服务的Servlet,为了通用性,最好选择GenericServlet来继承
package lavasoft.
import lavasoft.server.Java6WS;
import javax.servlet.*;
import javax.xml.ws.E
import java.io.IOE
* 发布Java6 WebService的Servlet,
* @author leizhimin  13:52:49 
public class WSServlet extends GenericServlet {
         @Override
         public void init(ServletConfig servletConfig) throws ServletException {
                 super.init(servletConfig);
                 System.out.println(&准备启动WebService服务:http://192.168.14.117:8888/java6ws/Java6WS&);
                 //发布一个WebService
                 Endpoint.publish(&http://192.168.14.117:8888/java6ws/Java6WS&, new Java6WS());
                 System.out.println(&已成功启动WebService服务:http://192.168.14.117:8888/java6ws/Java6WS&);
         }
         public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
                 System.out.println(&此Servlet不处理任何业务逻辑,仅仅yonglai发布一个Web服务:http://192.168.14.117:8888/java6ws/Java6WS&);
         }
这里将服务发布的代码写在了Servlet的init()方法中,当Servlet加载时候,会自动执行init()里面的方法。从而达到发布服务的目的,由于此Servlet不处理任何业务,因此,在Service里面仅仅写了一个提示性的语句。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&servlet-name&axis&/servlet-name& &servlet-class&org.apache.axis.transport.http.AxisServlet&/servlet-class& &load-on-startup&2&/load-on-startup&&/servlet&&servlet-mapping& &servlet-name&axis&/servlet-name& &url-pattern&/services/*&/url-pattern&&/servlet-mapping&2、WEB-INF目录下添加server-config.wsdd文件&?xml version="1.0" encoding="UTF-8"?&&&deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"& &&& &globalConfiguration&& & &&parameter name="sendMultiRefs" value="true" &&/parameter&& & &&parameter name="disablePrettyXML" value="true"&&/parameter&& & &&parameter name="dotNetSoapEncFix" value="true"&&/parameter&& & &&parameter name="enableNamespacePrefixOptimization" value="false"&&/parameter&& & &&parameter name="sendXMLDeclaration" value="true"&&/parameter&& & &&parameter name="sendXsiTypes" value="true"&&/parameter&& & &&paramenter name="attachments.implementataion" value="org.apache.axis.attachments.AttachmentsImpl"&&/paramenter&& &/globalConfiguration&& &handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"&&/handler&& &service name="AssetsWebService" provider="java:RPC"&&!-- &webservice classpath &--&& & &parameter name="className" value="com.nos.smk.webservice.impl.AssetsWebServiceImpl"/&& & &parameter name="scope" value="request"&&/parameter&& & &parameter name="allowedMethods" value="*"/&&!-- &webservice返回javabean配置 &--&& & &beanMapping languageSpecificType="java:com.nos.smk.webservice.impl.AssetsBean" qname="ns1:AssetsBean" xmlns:ns1="urn:BeanService"/&&& &/service&& &transport name="http"&&& & &requestFlow&& & & &&handler type="URLMapper"&&/handler&& & &/requestFlow&& &/transport&&/deployment&3、编写Javabean类4、编写webservice接口5、客户端调用webservicepublic class Test { public static void main(String[] args) {&
String targetEendPoint ="http://localhost:990/bdmsys/services/AssetsWebService";&& & & & Service service = new Service();&& & & & try {&& & & & & & Call call = (Call)service.createCall();&& & & & & & QName qn = new QName("urn:BeanService","AssetsBean");&& & & & & &call.registerTypeMapping(AssetsBean.class, qn,&& & & & & & & & & & new BeanSerializerFactory(AssetsBean.class, qn),&& & & & & & & & & & new BeanDeserializerFactory(AssetsBean.class, qn));&& & & & & & call.setTargetEndpointAddress(new URL(targetEendPoint));&& & & & & & call.setOperationName(new QName("AssetsWebService","getAssetInfo"));& & & & & & call.addParameter("chartCode", org.apache.axis.Constants.XSD_STRING, ParameterMode.IN); &//设置webService方法参数类型& & & & & & call.setReturnClass(AssetsBean.class); & &//设置webService返回值类型& & & & & &&& & & & & & AssetsBean result = (AssetsBean)call.invoke(new Object[]{""});&& & & & & & System.out.println("finish check");&& & & & & & System.out.println(result.getName());& & & & } catch (ServiceException e) {&& & & & & & e.printStackTrace();&& & & & } catch (MalformedURLException e) {&& & & & & & e.printStackTrace();&& & & & } catch (RemoteException e) {&& & & & & & e.printStackTrace();&& & & & }&
阅读(1017)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'java发布webservice 返回javabean',
blogAbstract:'1、web.xml配置&servlet&\t&servlet-name&axis&/servlet-name&\t&servlet-class&org.apache.axis.transport.http.AxisServlet&/servlet-class&\t&load-on-startup&2&/load-on-startup&&/servlet&&servlet-mapping&\t&servlet-name&axis&/servlet-name&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:8,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'颓废',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}> 博客详情
正在开发的中间件要用到第三方提供的webservice,网上的资料稂莠不齐,java调用webservice折腾了我两天,不就是调用URL上对应的方法嘛,尼玛怎么这么难调用?(还是RESTFUL好用)方法太多看到头晕眼花,我喜欢简单明了,拿来就用的,不要搞一堆的方法,萝莉啰嗦,写得不清不楚,漏这漏那的,用起来不是这错就那错,一气之下,小弟自己整理一个简单步骤,与大家分享,欢迎大家狂喷!
步骤如下:
1.下载AXIS2类库,AXIS2是目前java调用webservice的一个主要方法(由于更新较频繁,请自行google该类库的网址)
2.由于是第三方webservice,直接引入AXIS2的包就可以用了,代码如下:
import java.rmi.RemoteE
import javax.xml.rpc.ParameterM
import javax.xml.rpc.ServiceE
import org.apache.axis.client.C
import org.apache.axis.client.S
import org.apache.axis.encoding.XMLT
public class webServiceTest {
public String invokeRemoteFuc() {
String endpoint = "http://localhost:8080/webservice/services/helloworld";
String result = "no result!";
Service service = new Service();
Object[] object = new Object[1];
object[0] = "Dear I miss you";//Object是用来存储方法的参数
call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);// 远程调用路径
call.setOperationName("say");// 调用的方法名
// 设置参数名:
call.addParameter("str1", // 参数名
XMLType.XSD_STRING,// 参数类型:String
ParameterMode.IN);// 参数模式:'IN' or 'OUT'
// 设置返回值类型:
call.setReturnType(XMLType.XSD_STRING);// 返回值类型:String
result = (String) call.invoke(object);// 远程调用
} catch (ServiceException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
public static void main(String[] args) {
webServiceTest t = new webServiceTest();
String result = t.invokeRemoteFuc();
System.out.println(result);
该方法的原理很简单,通过AXIS2封装好的类设置URL和参数,直接调用就好了,我们要关注的就是设置URL,方法,还有方法的参数,其他的copy&paste好啦,很简单吧,再看看其他的方法,我勒个去了,害我瞎搞两天。迟点上个源码共大家参考!
”在线下联结了各位 OSCer,推广开源项目和理念,很荣幸有你的参与~
领取条件:参与过开源中国“源创会”的 OSCer 可以领取
我看了一下,官网在维护,再等等
我只在快盘备份了
回复 : 快盘的空间早没了
回复 : 快盘的空间早没了那怎么办啊
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥}

我要回帖

更多关于 arcgis 发布地图服务 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信