java - 在 Eclipse 中更改 Web 服务 java 代理方法返回类型

标签 java eclipse web-services proxy

我在 Eclipse 项目中有一个代理类,供项目使用 Web 服务。代理类如下所示(从向导自动生成的代码)

public class WebServiceUpg2SoapProxy implements org.uppgift2.www.WebServiceUpg2Soap {
private String _endpoint = null;
private org.uppgift2.www.WebServiceUpg2Soap webServiceUpg2Soap = null;

public WebServiceUpg2SoapProxy() {
    _initWebServiceUpg2SoapProxy();
}

public WebServiceUpg2SoapProxy(String endpoint) {
    _endpoint = endpoint;
    _initWebServiceUpg2SoapProxy();
}

private void _initWebServiceUpg2SoapProxy() {
try {
    webServiceUpg2Soap = (new org.uppgift2.www.WebServiceUpg2Locator()).getWebServiceUpg2Soap();
    if (webServiceUpg2Soap != null) {
    if (_endpoint != null)
    ((javax.xml.rpc.Stub)webServiceUpg2Soap)._setProperty("javax.xml.rpc.service.endpoint.address", _endpoint);
    else
    _endpoint = (String)((javax.xml.rpc.Stub)webServiceUpg2Soap)._getProperty("javax.xml.rpc.service.endpoint.address");
}

}
catch (javax.xml.rpc.ServiceException serviceException) {}
}

public String getEndpoint() {
    return _endpoint;
}

public void setEndpoint(String endpoint) {
    _endpoint = endpoint;
    if (webServiceUpg2Soap != null)
    ((javax.xml.rpc.Stub)webServiceUpg2Soap)._setProperty("javax.xml.rpc.service.endpoint.address", _endpoint);

}

public org.uppgift2.www.WebServiceUpg2Soap getWebServiceUpg2Soap() {
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap;
}

public org.uppgift2.www.ObjectOwner[] getObjectOwner() throws java.rmi.RemoteException{
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap.getObjectOwner();
}

public org.uppgift2.www.RealEstateBroker[] getRealEstateBroker() throws java.rmi.RemoteException{
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap.getRealEstateBroker();
}

public org.uppgift2.www.Showing[] getShowing() throws java.rmi.RemoteException{
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap.getShowing();
}

public org.uppgift2.www.ProspectiveBuyer[] getProspectiveBuyers() throws java.rmi.RemoteException{
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap.getProspectiveBuyers();
}

public org.uppgift2.www.RealEstateObject[] getRealEstateObjects() throws java.rmi.RemoteException{
    if (webServiceUpg2Soap == null)
    _initWebServiceUpg2SoapProxy();
    return webServiceUpg2Soap.getRealEstateObjects();
    }
}

我在另一个类中有一个方法,它创建代理类的实例并调用它的方法

public TableModel getObjectOwner() {
WebServiceUpg2SoapProxy proxy2 = new WebServiceUpg2SoapProxy();

    List<ObjectOwner> oo = null;
    try {
        oo = proxy2.getObjectOwner();
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return buildTableModel(oo);     
}

这给了我一个错误

Type mismatch: cannot convert from ObjectOwner[] to List

我的问题是;如何将代理的返回类型从 ObjectOwner[] 更改为 List?这可以在向导中完成吗?

我知道在 Visual Studio 中,您只需右键单击解决方案资源管理器中的服务器引用并配置引用,然后在提示窗口中更改它即可。这可以在 Eclipse 中完成吗?

提前致谢。

最佳答案

该错误非常具体:您无法分配 ObjectOwner[] (一个数组)到 List<ObjectOwner> (实现 List 接口(interface)的类的实例)。相反,您可以更改代码以适应此数组,并使用 Arrays#asList 将其转换为列表。 :

oo = Arrays.asList(proxy2.getObjectOwner());

请注意,通过执行此操作,您无法在此列表中添加新元素。如果你想修改列表的状态,最好创建一个新的 ArrayList (或 List 接口(interface)的另一个所需实现)并在数组中添加元素:

//Since Java 7 
oo = new ArrayList<>(Arrays.asList(proxy2.getObjectOwner()));

//For Java 5 and 6
oo = new ArrayList<ObjectOwner>(Arrays.asList(proxy2.getObjectOwner()));

关于java - 在 Eclipse 中更改 Web 服务 java 代理方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23092890/

相关文章:

java - 如何调整 BufferedInputStream read()?

java - 忽略 FreeMarker 模板中的所有换行符

java - 通过 java 将日期列表传递给 oracle db 函数

java - 使用简单的 Java 类连接(登录)到 Alfresco

ruby-on-rails - rails : How to manage associations between two tables syncing data?

java - 在类 block 内声明和实例化

java - 带有 jvm args 的可运行 jar

eclipse - Mylyn Task Focus用户界面

c# - WebException 无法为 SSL/TLS 安全通道建立信任关系

apache - IWAB0014E 发生意外异常