关于web service 初步问题

关于webservice其实好久之前,就想深入的研究一下的,目前对于这个技术仅仅处于两年前的理解吧。今天突然想好好看看了,所以就打开Eclipse 创建了这么个工程。因为用了Eclipse自带的webservice框架(xfire)所以开发挺快的,。我先创建一个服务器段的工程,下面是服务器端工程的services.xml配置清单:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

 <service>
  <name>HelloWorld</name>
  <serviceClass>com.wangyingda.IHelloWorld</serviceClass>
  <implementationClass>
   com.wangyingda.HelloWorldImp
  </implementationClass>
  <style>wrapped</style>
  <use>literal</use>
  <scope>application</scope>
 </service>
 
 </beans>

服务器端创建好之后,就是测试你的service是否成功了,把工程发布在tomcat下,通常情况下可能会出现不成功的情况,。出错信息是这样的:

javax.servlet.ServletException: Servlet execution threw an exception

 

root cause

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
	javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
	org.codehaus.xfire.wsdl11.builder.SchemaSerializer.writeXml(SchemaSerializer.java:46)
	org.codehaus.xfire.wsdl11.builder.SchemaSerializer.marshall(SchemaSerializer.java:35)
	com.ibm.wsdl.xml.WSDLWriterImpl.printExtensibilityElements(Unknown Source)
	com.ibm.wsdl.xml.WSDLWriterImpl.printTypes(Unknown Source)
	com.ibm.wsdl.xml.WSDLWriterImpl.printDefinition(Unknown Source)
	com.ibm.wsdl.xml.WSDLWriterImpl.writeWSDL(Unknown Source)
	com.ibm.wsdl.xml.WSDLWriterImpl.writeWSDL(Unknown Source)
	org.codehaus.xfire.wsdl11.builder.WSDLBuilder.write(WSDLBuilder.java:182)
	org.codehaus.xfire.wsdl11.builder.WSDLBuilderAdapter.write(WSDLBuilderAdapter.java:40)
	org.codehaus.xfire.DefaultXFire.generateWSDL(DefaultXFire.java:104)
	org.codehaus.xfire.transport.http.XFireServletController.generateWSDL(XFireServletController.java:380)
	org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:125)
	org.codehaus.xfire.transport.http.XFireServlet.doGet(XFireServlet.java:107)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

 </beans>

这个问题比较常见,其实我具体也不是很清楚,只是知道是jar不兼容或者是jdk版本什么的,反正不管,下载一个xalan.jar加入运行path里,重新启动tomcat 再次访问:http://localhost:8081/FirstWebService/services/helloworld?wsdl ,如果访问当文档,ok了。至此服务器端成功创建了。

 

下边说说关于客户端创建:

        首先创建一个web工程。然后新建web service client 选定当前web工程。使用WSDL或者URL,使用向导创建。成功后,文件夹里会生成两个文件。HelloWorldClient和HelloWorldPortType。那么如何在测试类中体现他们的使用那,下边就是具体的使用了:
package testpage;

import com.wangyingda.HelloWorldClient;
import com.wangyingda.HelloWorldPortType;


public class Test {
  
 public static void main(String[] args){ 
 HelloWorldClient client = new HelloWorldClient();
   
 //create a default service endpoint
    HelloWorldPortType service = client.getHelloWorldHttpPort();
   
   String sh = service.sayHello("王英达");
  
   System.out.println("test client completed"+sh);
 }
}
好了,完了,webservice 小小尝试完毕。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值