java调用openmeetings webservices报错。

小博 发布于 2011/03/23 15:48
阅读 1K+
收藏 1

这里只调用简单的userservice里的getSession方法,代码如下:
package client.stub;

import client.UserServiceStub;

import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class UserServiceStubClient {
    public static void main(String[] args) throws Exception {
        UserServiceStub stub = new UserServiceStub();
        UserServiceStub.Sessiondata gg = new UserServiceStub.Sessiondata();
        String sid = null;
        sid = gg.getSession_id();
        System.out.println("$$$$$$$$$$$$$$$$:" + sid);
        System.out.println("!!!!!!!!!!!!!另一种方法!!!!!!!!!!!!!!");
        //////////////////////////////////

        //另一方法
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference("http://localhost:5080/openmeetings/services/UserService");
        options.setTo(targetEPR);
        //下面的代码调用了getSession方法,并返回Sessiondata对象实例
        QName opAddEntry = new QName("http://services.axis.openmeetings.org", "getSession");
        data.Sessiondata sd = (data.Sessiondata) serviceClient.invokeBlocking(opAddEntry, new Object[] {}, new Class[] { data.Sessiondata.class })[0];
        System.out.println(sd.getSession_id());
    }
}
报如下错误:
$$$$$$$$$$$$$$$$:null
!!!!!!!!!!!!!另一种方法!!!!!!!!!!!!!!
Exception in thread "main" org.apache.axis2.AxisFault: org.openmeetings.app.hibernate.beans.basic.Sessiondata
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:365)
at org.apache.axis2.databinding.utils.BeanUtil.processObject(BeanUtil.java:722)
at org.apache.axis2.databinding.utils.BeanUtil.ProcessElement(BeanUtil.java:670)
at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:602)
at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:104)
at client.stub.UserServiceStubClient.main(UserServiceStubClient.java:27)
Caused by: java.lang.ClassNotFoundException: org.openmeetings.app.hibernate.beans.basic.Sessiondata
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.apache.axis2.util.Loader.loadClass(Loader.java:261)
at org.apache.axis2.util.Loader.loadClass(Loader.java:229)
at org.apache.axis2.databinding.utils.BeanUtil.deserialize(BeanUtil.java:363)
... 5 more
我看了下,服务端是有这个jar包的啊,这个包里有文件org.openmeetings.app.hibernate.beans.basic.Sessiondata

另外也调用了,openmeetings_1_6_rc1_r3621.zip这个服务也报同样的错误。

来啥也别说了,看看坛子解决问题好使不?

加载中
0
红薯
红薯

缺少类啊 org.openmeetings.app.hibernate.beans.basic.Sessiondata

0
小博

是啊,但在在安装目录里有这个jar包啊openmeetings.jar这个jar包的有这个Sessiondata.class啊

D:\openmeetings\openmeetings_1_6_rc1_r3621\red5\webapps\openmeetings\WEB-INF\lib\openmeetings.jar

0
红薯
红薯

引用来自#3楼“小博”的帖子

是啊,但在在安装目录里有这个jar包啊openmeetings.jar这个jar包的有这个Sessiondata.class啊

D:\openmeetings\openmeetings_1_6_rc1_r3621\red5\webapps\openmeetings\WEB-INF\lib\openmeetings.jar

可看你的意思,你这是客户端啊,并不在web环境里,把 openmeetings.jar 加到你客户端程序的类路径吧

0
小博

我试了下,还是报错误。

你说能不能这个原因,openmeetings的webservices的aixs2的版本是1.3的

而我自己整的axis2demo工程引用的包是axis2-1.4.1的,是否服务端、客户端二者的版本都要一致呢?

0
红薯
红薯

引用来自#5楼“小博”的帖子

我试了下,还是报错误。

你说能不能这个原因,openmeetings的webservices的aixs2的版本是1.3的

而我自己整的axis2demo工程引用的包是axis2-1.4.1的,是否服务端、客户端二者的版本都要一致呢?

我觉得不是,肯定是缺哪个jar包了

因为是webservice,这个跟客户端什么版本完全没关系

0
小博

引用来自#6楼“红薯”的帖子

引用来自#5楼“小博”的帖子

我试了下,还是报错误。

你说能不能这个原因,openmeetings的webservices的aixs2的版本是1.3的

而我自己整的axis2demo工程引用的包是axis2-1.4.1的,是否服务端、客户端二者的版本都要一致呢?

我觉得不是,肯定是缺哪个jar包了

因为是webservice,这个跟客户端什么版本完全没关系

但我在openmeetings官网上下的 openmeetings_1_6_rc1_r3621里有这个openmeetings.jar啊,难道官网里还缺包?这个包里有seesiondata这个类的。怎么还会报缺jar包呢?

D:\openmeetings\openmeetings_1_6_rc1_r3621\red5\webapps\openmeetings\WEB-INF\lib\openmeetings.jar

0
华宰
华宰

红薯的意思:jar 包是有啊,但你可能没包含在你的程序类路径中

0
小博

华仔哥们,这个我能不知道嘛,呵呵。

0
小博
解决: 
1:我把服务端的含有sessiondata.class文件的openmeetings包引用了客户端的工程path里。
2:版本要一致.
0
小博

最初客户端的jdk版本是1.5的,而openmeetings的是jdk1.6,

执行客户端是报错的:
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at client.UserServiceRpcClient.main(UserServiceRpcClient.java:19)
我改成了1.6就没问题了。难道服务与客户端的jdk版本也要一样吗?
返回顶部
顶部