我正在使用Soap WS,我必须自定义每个操作的超时配置。自定义实际上是使用cxf
及其http-conf:conduit
完成的,无法自定义到操作级别。
我的实际配置是:
<bean id="proxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.package.PortType" />
<property name="address" ref="URL_WS" />
</bean>
<bean id="URL_WS" class="java.lang.String">
<constructor-arg value="http://serveraddress/Service"/>
</bean>
<http-conf:conduit name="http://serveraddress/Service.*">
<http-conf:client ConnectionTimeout="10000" ReceiveTimeout="10000"/>
</http-conf:conduit>
使用此配置,此WS的所有超时都可达10000毫秒。
如上所述,我想将其自定义为操作级别,我找到this link并尝试按照该过程进行操作,但我遇到了实现问题,但我只是{{ 1}}在我的classpath中,它有工厂方法:
com.ibm.wsdl.util.xml.QNameUtils
,采用public static QName newQName(Node paramNode)
。
我尝试使用此实现更改代码:
org.w3c.dom.Node
我<bean id="proxyFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="delegate">
<jaxws:client serviceClass="com.package.PortType" address="URL_WS" >
<jaxws:outInterceptors>
<bean class="com.package.CustomTimeoutInterceptor">
<property name="receiveTimeoutByOperationName">
<map key-type="javax.xml.namespace.QName" value-type="java.lang.Long">
<entry value="10">
<key>
<bean class="com.ibm.wsdl.util.xml.QNameUtils" factory-method="newQName">
<!-- I don't know what to put here -->
</bean>
</key>
</entry>
</map>
</property>
</bean>
</jaxws:outInterceptors>
</jaxws:client>
</property>
</bean>
的实施是Node
。我不知道我必须使用哪个com.sun.org.apache.xerces.internal.dom.NodeImpl
'子类以及如何创建它以使其以bean方式工作,我在使用这些不同的实现和这些不同的dom Levels的文档中丢失了自己。
我只想创建一个NodeImpl
的Object子类,它可以在这个Node
方法中工作
要么
找到一种不同的方式来自定义我的配置
答案 0 :(得分:0)
我终于解决了这个问题,这是工作解决方案:
我保留了链接的CustomTimeoutInterceptor,并在this link的帮助下混合了解决方案。
我也保留了我的初始配置,我发现seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
int progress = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
progress = progresValue;
textView.setText(progress + "/" + seekBar.getMax());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// Do something here, if you want to do anything at the start of
// touching the seekbar
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// Display the value in textview
textView.setText(progress + "/" + seekBar.getMax());
}
});
有一个工厂方法。我刚刚将这部分添加到我的配置中:
javax.xml.namespace.QName