在JBoss中调用WebService出org.jboss.ws.WSException

下面的方法可用,jar包在底下

 

使用jboss-4.2.2.GA,在调用remote web service时抛org.jboss.ws.WSException: Cannot obtain java type mapping for: {......}sayHello

 

使用EJB3发布WebService很简单,只要使用@WebService 和 @WebMethod 注释就行了。

Java代码   收藏代码
  1. @WebService   
  2. public   @Stateless   class  HelloBean  implements  Hello {  
  3.   
  4.     @WebMethod   
  5.     public  String sayHello(String name) {  
  6.         return   "Hello "  + name;  
  7.     }  
  8. }  

 启动JBoss 通过 http://localhost:8080/myproject/HelloBean?wsdl 查看wsdl

 

client 代码如下

Java代码   收藏代码
  1. public   static   void  callSayHello() {  
  2.     String wsdl = "http://localhost:8080/myproject/HelloBean?wsdl" ;  
  3.       
  4.     try  {  
  5.         URL url = new  URL(wsdl);  
  6.         String namespace = "http://bean.web......./" ;  
  7.         QName qname = new  QName(namespace,  "HelloBeanService" );  
  8.         QName port = new  QName(namespace,  "HelloBeanPort" );  
  9.         QName operation = new  QName(namespace,  "sayHello" );  
  10.       
  11.         ServiceFactory factory = ServiceFactory.newInstance();  
  12.         Service service = factory.createService(url, qname);  
  13.         Call call = service.createCall(port, operation);  
  14.           
  15.         System.out.println(call.invoke(new  Object[]{ "Andy" }));  
  16.     } catch  (Exception e) {  
  17.         e.printStackTrace();  
  18.     }  
  19. }  

 

运行报错 org.jboss.ws.WSException: Cannot obtain java type mapping for: {......}sayHello

同样的client代码,使用一个简单的 main函数却可以运行。

 

google之,找到一点有用的 http://www.mail-archive.com/[email protected]/msg13433.html

 

把JBoss里的jboss-jaxrpc.jar都删掉,从axis中复制axis.jar  jaxrpc.jar  commons-discovery-0.2.jar 到JBoss里,再运行原来的代码,就OK了。

 

 

你可能感兴趣的:(webservice)