首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAX-RPC、Spring服务和UnsupportedOperationCallException

JAX-RPC、Spring服务和UnsupportedOperationCallException
EN

Stack Overflow用户
提问于 2008-11-14 16:07:47
回答 1查看 9.3K关注 0票数 3

我有一个JAX服务,我正在尝试使用Spring来使用它。这是我第一次使用Spring来使用web服务,所以现在我只是尝试让它与JAX服务集成作为一个测试。

web服务有几十个操作,但现在我只关心一个。下面是我在Spring/客户端上创建的接口:

代码语言:javascript
复制
public interface WSClient {
    public boolean userExists(int userid);
}

public interface WSService {
    //this method matches the method signature of the Web Service
    public com.company.data.User getUser(int userid);
}

这是我的applicationContext.xml:

代码语言:javascript
复制
<bean id="WSClient" class="com.company.ws.test.WSClientImpl">
    <property name="service" ref="myWebService"></property>
</bean>

<bean id="myWebService" class="org.springframework.remoting.jaxrpc.JaxRpcPortProxyFactoryBean">
    <property name="serviceInterface" value="com.company.ws.test.WSService"/>
    <property name="endpointAddress" value="http://1.2.3.4/web-service/data"/>
    <property name="namespaceUri" value="http://www.company.com/wdsl"/>
    <property name="serviceName" value="CompanyWebService"/>
    <property name="username" value="username"/>
    <property name="password" value="password"/>
    <property name="maintainSession" value="true"/>
</bean>

使用此JaxRpcPortProxyFactoryBean配置,调用服务将返回以下异常:

org.springframework.remoting.RemoteProxyFailureException:无效的JAX-RPC调用配置;嵌套异常是操作样式:"rpc“不支持。

我从来没有完全理解RPC和文档样式web服务之间的区别;然而,我相信这个web服务是使用RPC风格的,所以这个例外让我感到困惑。

第二,我对应该使用JaxRpcPortProxyFactoryBean设置哪些属性感到困惑

  1. --如果我设置了wsdlDocumentUrl属性,最终会得到一个HTTP401错误,因为这个web服务位于的后面,而且在获取wsdlDocumentUrl时,wsdlDocumentUrl似乎没有使用用户名/密码属性。如果我指定一个[{http://www.company.com/wdsl}CompanyWebServiceInterfacePort];属性(值为CompanyWebServiceInterfacePort),则会得到一个不同的异常,说明:未能初始化JAX-RPC端口
  2. 嵌套异常是WSDL数据丢失,此操作不可用

换句话说,它告诉我WSDL丢失了--因为Spring不会使用用户名/密码从服务器获取它,所以我无法设置它!

我不知道这是否有意义,但本质上我不确定的是:

对于JAX服务,需要设置属性吗?这是我应该走的路吗? down?

  1. Similiarly,需要我设置wsdlDocumentUrl属性吗?如果是这样的话,我是否可以告诉Spring哪个WSDL并解决身份验证问题呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-14 21:09:17

我最终通过在本地保存WSDL文件的副本来解决这个问题,并且由于JaxRpcPortProxyFactoryBean期望wsdlDocumentUrl属性有一个java.net.URL,所以必须使用像file:///c:/.../blah.wsdl这样的路径来设置它。

这并不是真正需要的,我不想将file:/// URI放在一个可能部署在服务器上的Spring上下文文件中,特别是在一个不同的平台上--这个类的行为方式似乎很奇怪。

我猜大多数人都不使用Spring,也没有使用JAX。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/290574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档