以文本方式查看主题

-  W3CHINA.ORG讨论区 - 语义网·描述逻辑·本体·RDF·OWL  (http://bbs.xml.org.cn/index.asp)
--  『 Web Services & Semantic Web Services 』  (http://bbs.xml.org.cn/list.asp?boardid=10)
----  Web service里可否new新实例  (http://bbs.xml.org.cn/dispbbs.asp?boardid=10&rootid=&id=38366)


--  作者:sunlightbj
--  发布时间:9/27/2006 5:01:00 PM

--  Web service里可否new新实例
我们现在做一个项目,试图把一个Video stream的java文件,转成web service发布。这个java文件,是要传输一个视频文件。

我们用的Tomcat 5 + Axis 1.4,采用最简单的办法,就是把java源文件改了以后,扩展名变成.jws,放在webapps目录下,变成web service。可是客户端调用的时候,凡是执行到service里创建某个类实例,就会报错,例如p.addControllerListener(new StateListener());

错误信息如下:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
 {http://xml.apache.org/axis/}hostname:pcwin657

java.lang.reflect.InvocationTargetException
 at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
 at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
 at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
 at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
 at javax.xml.parsers.SAXParser.parse(Unknown Source)
 at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
 at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
 at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
 at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
 at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
 at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
 at org.apache.axis.client.Call.invoke(Call.java:2767)
 at org.apache.axis.client.Call.invoke(Call.java:2443)
 at org.apache.axis.client.Call.invoke(Call.java:2366)
 at org.apache.axis.client.Call.invoke(Call.java:1812)
 at VideoTransClient.main(VideoTransClient.java:27)


我的客户端代码如下:http://www.win.tue.nl/~jzhang/VideoTransClient.java
我的服务端如下:http://www.win.tue.nl/~jzhang/VideoTransmit.java

请问:我这样做是否有什么问题?web service里可以创建实例吗?我尝试了在构造函数里new一个实例,也不行。

如果我有一个java文件要发布成web service,可是它又依赖另一个java文件的类定义,我如何把两个文件都放到webservice里?谢谢

我是web service新手。请大家帮帮忙,十分感谢!


--  作者:sunlightbj
--  发布时间:9/27/2006 5:01:00 PM

--  
甚至这样简单的Hello world也会有同样的错误,为什么呢:

public class HelloClient{

 MyHelloClass obj;

 public String getName(){
  obj = new MyHelloClass("amosa");
  return obj.getName();}
  
 public class MyHelloClass{
   String myName;
   public MyHelloClass(String Name){myName = Name;}
   public String getName(){return "hello"+myName;}
  }
}


--  作者:sunlightbj
--  发布时间:9/27/2006 5:01:00 PM

--  
Hello world我的client端如下:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import java.net.MalformedURLException;
import java.rmi.RemoteException;

public class SayHelloClient2
{
 public static void main(String[] args)
 {
  try
  {
    
   String endpoint =
    "http://localhost:1107/axis/HelloClient.jws";
   
   Service service = new Service();
   Call call = null;
   
   call = (Call) service.createCall();
   
   call.setOperationName(new QName(
 "http://localhost:1107/axis/HelloClient.jws",
   "getName"));

   call.setTargetEndpointAddress
   (new java.net.URL(endpoint));
   String ret = (String) call.invoke(new Object[]
                                                {});
   System.out.println("return value is " + ret);
  }
  catch (Exception ex)
  {
   ex.printStackTrace();
  }
 }
}

错误信息如下:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
 {http://xml.apache.org/axis/}hostname:pcwin657


--  作者:kevin_78
--  发布时间:3/14/2007 1:20:00 PM

--  
学到不少
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
48.828ms