0

我是 JAX-RPC 的新手。我尝试在 RAD 7.0 中创建一个简单的 Java bean,并通过选项来创建一个 JAX-RPC Web 服务。我的方法如下。

 public byte[] getData(byte[] argument) {

    <Customclass> proxy = new <Customclass>();
    List outputList = new ArrayList();
    try {
        // Call a method on proxy
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    byte[] output = getBytesFromObject(outputList);
    return output;

}

1)如果我不导入任何依赖类,这在从客户端调用时工作正常。2)但是,当我导入一个依赖类(如上所示的自定义类)时,我会看到以下异常

 [9/12/09 9:59:00:182 IST] 00000026 UserException E   WSWS3228E: Error: Exception: WebServicesFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
 faultString: java.lang.NoClassDefFoundError: <Customclass>
 faultActor: null
 faultDetail: 
java.lang.NoClassDefFoundError: 

打包 - 上述方法驻留在应用程序(ear)中,该应用程序将所有必要的类作为 jar 文件包含在 ear 中。上面的方法是从客户端——JAX-RPC 客户端调用的。

如果有人可以指导我,将不胜感激。

4

2 回答 2

0

/lib 文件夹中的 jars 还是部署描述符中指定的文件夹?以下内容来自JSR-000244 JavaTM 平台,企业版 5 规范第 8.2.1 节。

EE.8.2.1

捆绑的库 与应用程序捆绑的库可以通过以下方式引用:

  1. JAR 格式文件(例如 .jar 文件、.war 文件或 .rar 文件)可以通过在引用 JAR 文件的 Manifest 中的 Class-Path 标头中命名所引用的 .jar 文件或目录来引用 .jar 文件或目录文件。引用的 .jar 文件或目录使用相对于引用 JAR 文件的 URL 的 URL 命名。清单文件在 JAR 文件中被命名为 META-INF/MANIFEST.MF。Manifest 文件中的 Class-Path 条目的格式为 Class-Path: list-of-jar-files-or-directories-separated-by-spaces

  2. .ear 文件可能包含一个目录,该目录包含打包在 JAR 文件中的库。.ear 文件的部署描述符的 library-directory 元素包含此目录的名称。如果未指定 library-directory 元素,或者 .ear 文件不包含部署描述符,则使用名为 lib 的目录。空的 library-directory 元素可用于指定没有库目录。此目录(但不是子目录)中带有 .jar 扩展名的所有文件都必须可供打包在 EAR 文件中的所有组件使用,包括应用程序客户端。这些库可以使用本文描述的任何技术引用与应用程序捆绑或单独安装的其他库。

  3. Web 应用程序可能包含 WEB-INF/lib 目录中的库。有关详细信息,请参阅 Servlet 规范。这些库可以使用本文描述的任何技术引用与应用程序捆绑或单独安装的其他库。

此外,将 CustomClass 变量声明放在 try/catch 中,看看您是否获得有关异常的更多信息。

于 2009-09-12T13:14:04.690 回答
0

我遇到了 XStream - 它允许我按原样使用现有对象并将它们作为 xml 字符串传递给服务器,并在服务器端从 xml 字符串重新创建对象。

我想这是将 Map、List 对象从客户端传递到服务器的一种方法。

我计划现在将服务器模块移动到远程盒子。

于 2009-09-16T07:57:17.000 回答