我有一个应用程序需要向Internet上的系统发出SOAP客户端请求,因此需要通过我们的HTTP代理.
可以通过设置系统属性值(如系统属性)来执行此操作:
// Cowboy-style. Blow away anything any other part of the application has set.
System.getProperties().put("proxySet", "true");
System.getProperties().put("https.proxyHost", HTTPS_PROXY_HOST);
System.getProperties().put("https.proxyPort", HTTPS_PROXY_PORT);
Run Code Online (Sandbox Code Playgroud)
或者通过设置默认的ProxySelector(也是系统范围的设置):
// More Cowboy-style! Every thing Google has found says to do it this way!?!?!
ProxySelector.setDefault(new MyProxySelector(HTTPS_PROXY_HOST, HTTPS_PROXY_PORT));
Run Code Online (Sandbox Code Playgroud)
如果其他子系统可能希望通过不同的HTTP代理或没有任何代理访问Web服务器,这些都不是明智的选择.使用the ProxySelector将让我配置哪些连接使用代理,但我必须为巨大的应用程序中的每一件事情弄清楚.
一个合理的API会有一个方法,java.net.Proxy就像java.net.Socket(java.net.Proxy proxy)构造函数那样接受一个对象.这样,必要的设置对于需要设置它们的系统部分是本地的.有没有办法用JAX-WS做到这一点?
我不想设置系统范围的代理配置.
更新:Oracle已将此确认为错误.
简介:某些在JDK 1.6中工作的自定义BeanInfos和PropertyDescriptors在JDK 1.7中失败,有些只在垃圾收集运行并且清除了某些SoftReferences后才会失败.
编辑:这也将打破
ExtendedBeanInfo在春季3.1,如帖子底部所述.编辑:如果您调用JavaBeans规范的第7.1或8.3节,请准确说明规范的这些部分需要什么.在这些部分中,语言不是必要的或规范性的.这些部分中的语言是示例中的语言,这些示例最好不明确作为规范.此外,
BeanInfoAPI特别允许人们更改默认行为,并在下面的第二个示例中明确区分.
Java Beans规范查找具有void返回类型的默认setter方法,但它允许通过a定制getter和setter方法java.beans.PropertyDescriptor.使用它的最简单方法是指定getter和setter的名称.
new PropertyDescriptor("foo", MyClass.class, "getFoo", "setFoo");
Run Code Online (Sandbox Code Playgroud)
这在JDK 1.5和JDK 1.6中有效,以指定setter名称,即使它的返回类型不是void,如下面的测试用例中所示:
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import org.testng.annotations.*;
/**
* Shows what has worked up until JDK 1.7.
*/
public class PropertyDescriptorTest
{
private int i;
public int getI() { return i; }
// A setter that my people call "fluent".
public PropertyDescriptorTest setI(final int i) { this.i = i; return this; }
@Test …Run Code Online (Sandbox Code Playgroud)