javawebservice源码
⑴ java webservice生成的客户端代码 需要哪些jar包
1、安装环境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2。
2、下载Axis安装包。
3、将Axis相关包文件放在WEB-INF\lib目录下。
4、Axis可选的包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface (DII)
2、Dynamic Proxy方式
3、Stubs方式
建议我们使用Stubs方式,因此我就主要就介绍一下第三种方式。
注意,Java源代码是放在D:\workspace\test\目录下,Axis相关包文件放在D:\workspace\test\WEB-INF目录下。
⑵ 发布webservice,java类初始化问题
发布成webservice后,我发现,不管是调用其中的get,set,方法,构造函数都要被调用一次,而且每次get,set里打印的地址也不一样,怎么能使得set以后,能get到set的字符串呢?谢谢
这说明每次你调用webservice都会实例化一个Test对象
所以你第二次get调用时 也会触发构造方法 也就是说这时候的Test已经是一个新的实体类了和你set的时候不是一个对象了
你的需求用一般的servlet就行了 每次用户通过你开发servlet开远程控制socket服务器
⑶ java调用webservice例子
现在大多数项目都会用到spring,所以选择 CXF 框架,cxf能很好的和spring结合
在官网下载最新版 xcf 3.0.3 网站 http://cxf.apache.org/
MyEclipse项目结构图
结构图中各个文件源码
HelloWorldImpl.java
---------
import javax.jws.WebService;
@WebService(endpointInterface = "IHelloWorld", serviceName = "HelloWorld")
public class HelloWorldImpl implements IHelloWorld {
@Override
public String sayHello(String text) {
return "serviceSay: " + text;
}
}
------------------------------------------------------------------------------------------------
IHelloWorld.java
---------
import javax.jws.WebService;
@WebService
public interface IHelloWorld {
public String sayHello(String text);
}
------------------------------------------------------------------------------------------------
Test.java
---------
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
public class Test {
public static void main(String[] args) throws Exception {
DynamicClientFactory dcf = DynamicClientFactory.newInstance();
Client c = dcf.createClient("http://localhost:8080/cxf/ws/hwUrl?wsdl");
Object[] param = new Object[] { "----test....." };
Object[] result = c.invoke("sayHello", param);
System.out.println(result[0].toString());
}
}
------------------------------------------------------------------------------------------------
cxf-servlet.xml
-----------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:soap="http://cxf.apache.org/bindings/soap"
xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
<jaxws:server id="hwService" serviceClass="IHelloWorld"
address="/hwUrl">
<jaxws:serviceBean>
<bean class="HelloWorldImpl" />
</jaxws:serviceBean>
</jaxws:server>
</beans>
------------------------------------------------------------------------------------------------
web.xml
---------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>cxfS</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxfS</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
</web-app>
------------------------------------------------------------------------------------------------
部署项目,然后运行Test.java
在浏览器里面输入http://localhost:8080/cxf/ws/hwUrl?wsdl 可查看webservice服务接口信息
⑷ 用JAVA做webservice接口原代码
建议你用新标准开发:jaxws
可以下载 jaxws-ri (标准参考实现),里面有很完备的例子。
另外,你可以用Apache CXF做为运行容器。
⑸ C# 调用java webservice 接口
C#调用WEBSERVICE
只要在项目中添加WEBSERVICE引用就行了.
输入网址.很简单的
document对象
序列化 和 反序列化
JAVA C# 那个参数都用文本传递接受
⑹ 谁有Java开发webservice 的完整实例参考一下,谢谢啦!
java实现webservice实例
文章分类:Java编程
今天下午突然想研究下WEBSERVICE,从网上找了好多实例,但很多写的让人实在难以恭维,花了三个小时的圈圈转后总算搞通了,其实也挺简单的,这里特别感谢http://www.liuzm.com/article/java/992.htm这篇文章,总算让我弄明白了,现在贴出我的实例步骤,感谢那个博主的同时,与大家共同分享。
一:
首先创建个WEB工程,然后: http://ws.Apache.org/axis/网站下载Axis安装包.当然还依赖其他包的,我这里在附件里上传了所有应用到得包,方便大家。
二:
然后就写wsdd 文件(注:其实这里真的不用,可以跳过第二步)为了生成这个文件:server-config.wsdd
deploy.wsdd:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="" target="_blank">http://xml.apache.org/axis/wsdd/providers/java">
<service name="HelloWorld" provider="java:RPC">
<parameter name="className" value="HelloWorld"/>
<parameter name="allowedMethods" value="sayHello"/>
</service>
</deployment>
在DOS下转换目录到%TOMCAT_HOME%\webapps\axis\WEB-INF,命令:
java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.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 name="disablePrettyXML" value="true"/>
<parameter name="dotNetSoapEncFix" value="true"/>
<parameter name="" value="false"/>
<parameter name="sendXMLDeclaration" value="true"/>
<parameter name="sendXsiTypes" value="true"/>
<parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
</globalConfiguration>
<handler type="java:org.apache.axis.handlers.http.URLMapper" name="URLMapper"/>
<service name="Login.jws" provider="java:RPC">
<parameter name="className" value="server.SayHello"/>
<parameter name="scope" value="request"/>
<parameter name="allowedMethods" value="*"/>
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</service>
<transport name="http">
<requestFlow>
<handler type="URLMapper"/>
</requestFlow>
</transport>
</deployment>
放到 WEB-INF 目录下 和web.xml一起,其中,WEB.XML可以直接从你下载的axis项目中拿来到自己工程就好,或者自己添加:
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
四:
服务端提供的方法:
package server;
public class SayHello {
public String getName(String name) {
return "hello====>" + name;
}
}
五:
客户端访问服务端接口获得数据的方法:
package client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class TestClient {
public static void main(String[] args) throws Exception {
// 指出service所在URL
String endpoint = "http://127.0.0.1:8082/webservice/services/Login.jws";
// 创建一个服务(service)调用(call)
Service service = new Service();
Call call = (Call) service.createCall();// 通过service创建call对象
// 设置service所在URL
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// 方法名(processService)与MyService.java方法名保持一致
call.setOperationName("getName");
// Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)
String ret = (String) call.invoke(new Object[] { "继中" });
System.out.println(ret);
}
}
六:启动tomcat,先访问http://127.0.0.1:8082/webservice/services,看是否有方法显示,有显示,则代表服务端提供的接口可以成功访问了。
我的效果是这样:
And now... Some Services
•Login.jws (wsdl)
◦getName
七:
然后在本地跑客户端TestClient,就应该有结果啦,大家试试吧。
需要lib.jar可以到这里找http://yangjizhong.javaeye.com/blog/579511
⑺ java 项目怎么调用.net写的webService,求源码。
发布.net webservice得到wsdl地址:(你的)http://222.92.47.171:8003/SZDataExchange/SZDataExchange.asmx?wsdl
根据wsdl2java工具包生成对应java客户端
publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{
//TODOAuto-generatedmethodstub
Service1_Service1=newService1Locator();
Service1Soap_PortType_Service1Soap_PortType;
StringresultStr=null;
_Service1Soap_PortType=_Service1.getService1Soap();
resultStr=_Service1Soap_PortType.helloWorld("zybaby");
System.out.println(resultStr);
}
⑻ java webservice例子,例子完整,最好有注释,demo也行!但是一定要完整!谢谢!
刚好 我这两天也在学webservice,给你一个我才学的例子
1.解压axis压缩包,然后解压,取出里面的webapps里面的axis项目放到tomcat中的webapps中,然后启动tomcat
项目的发布有两种形式
1.即时发布
直接在axis中放置java源文件,注意后缀名字改为.jws.注意源文件中不要有任何的导包语句
详细步骤如下
1.直接在axis目录下编写java源文件,写好后把后缀名改为jws。如Demo.jws
2.重启动服务器,在浏览器中输入http://127.0.0.1:8080/axis/Demo.jws,点开后得到一个网址http://127.0.0.1:8080/axis/Demo.jws?wsdl
3.在myeclipse中导入网址http://127.0.0.1:8080/axis/Demo.jws?wsdl,可以执行里面的方法就可以了。
2.定制发布
编写要发布为服务器javaBean
编写生成class文件放在tomcat中的axis中的webinf中的classes中
编写deploy.wsdd文件描述服务器的名称入口等信息。
详细步骤
以一个add为例子
1.编写javaBean代码
public class add {
public Integer getAdd(Integer a, Integer b){
return a+b;
}
}
2.将class文件放入axis中的webinf下的classes中
注意,如果该类有包的话,就要建立相应的文件名,如
package com.ssh.webservice
那么classes文件下就要有相应的com文件夹,ssh文件夹,webservice文件夹
3.写上他的描述文件wsdd文件
描述文件直接放到classes中即可,名字为deploy.wsdd,文件为
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Add" provider="java:RPC">
list中显示的名字
<parameter name="className" value="add"/>
调用的类
<parameter name="allowedMethods" value="*"/>
指定调用的方法
</service>
</deployment>
4.编写批处理文件.bat文件,如下
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\axis-ant.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-discovery-0.2.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\commons-logging-1.0.4.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\jaxrpc.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\lib\saaj.jar;
set classpath=%classpath%;E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\libwsdl4j-1.5.1.jar
java org.apache.axis.client.AdminClient E:\ur2001Tomcat\apache-tomcat-6.0.32\webapps\axis\WEB-INF\classes\deploy.wsdd
然后运行该批处理文件
5.启动服务器,在浏览器中输入项目的发布地址,如http://127.0.0.1:8080/axis/就会有已个list,然后点进方法
6.编写客户端代码,如下
package com.ssh.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class TestClient
{
public static void main(String [] args) {
try {
String endpoint =
"http://127.0.0.1:8080/axis/services/Test01";
这个地址是值xml文件中的最后一行的local地址
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpoint) );
call.setOperationName(new QName("getMessage") );
指定调用的方法
String ret = (String) call.invoke( new Object[] { } );
如果有参数需要传入的话直接在括号里面写上1,2,2等
System.out.println(ret);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
我这里还有webservice的教学视屏,要的话说一声
⑼ Java调WebService完整的实例
首先, 你要先把你的WS服务启动起来,就是http://localhost:8080/Example/services/HelloWorldService?wsdl
然后在你的另一个项目中建一个Webservice Client 客户端,用来访问你的WS服务。
建立Webservice Client 方法如下,在Eclipses中建立一个java工程,然后在src上右键--NEW---Other---Web Service Client --Xfire--在WsdL url 中写上http://localhost:8080/Example/services/HelloWorldService?wsdl-----下一步结束。
在src里的会出现一些java文件,你找一个以Client结束的java文件,在里面的main方法中会有个service对象,现在你就可以直接用这个对象了,service.peerstatus(参数)这样写就行了。
纯手打啊,希望能对你有帮助。
⑽ c++如何与java进行交互 使用webservice形式。发我一个源码吧。或者给我讲一下其中的思路,以及使用的工具
使用JNI!不管什么样的应用都可以(如果是Android的话需要在Linux下),java中可以直接调用c中的方法,不需要其他工具,有eclipse和vc就可以,去了解一下,步骤也不难。