标签: proxy-classes

避免在每个setter中调用RaisePropertyChanged

我想摆脱模型类中占用空间和重复性的RaisePropertyChanged-Properties.我想要我的模特课......

public class ProductWorkItem : NotificationObject
{
    private string name;
    public string Name
    {
        get { return name; }
        set { 
            if (value == name) return; 
            name = value; RaisePropertyChanged(() => Name); 
        }
    }
    private string description;
    public string Description
    {
        get { return description; }
        set { 
            if (value == description) return; 
            description = value; RaisePropertyChanged(() => Description); 
        }
    }
    private string brand;
    public string Brand
    {
        get { return brand; }
        set { 
            if (value == brand) return; …
Run Code Online (Sandbox Code Playgroud)

c# proxy-classes mvvm inotifypropertychanged

3
推荐指数
2
解决办法
3821
查看次数

Axis HTTP Vs Axis HTTPS代理设置

部署在Weblogic Cluster上的我的Java应用程序调用两个Web服务,如下所示.

•它通过HTTPS将SOAP客户端请求发送到Internet上的外部应用程序.(通过Axis 1.4创建的Java类)

•此后它通过HTTP将SOAP客户端请求发送到内部应用程序(存在于连接到我的LAN的另一个节点上).(通过JAX-WS创建的Java类:Jdeveloper向导)

为了达到第一个WS,我必须使用以下代码为Web服务客户端设置https代理设置:

System.setProperty("https.proxyHost", myProxyIP);  
System.setProperty("https.proxyPort", myProxyPort);  
Run Code Online (Sandbox Code Playgroud)

而第二个Web服务不需要此代理设置,因为它们已在网络上可访问.

我的问题如下:

如果我调用第一个服务(具有代理设置的服务),然后调用另一个服务,则Axis客户端尝试使用相同的代理设置调用这些服务,即使我在我之前从系统属性中删除了代理设置即将通过写作来介绍2ns WS

 System.setProperty("http.proxySet", "false");  
    System.getProperties().remove("http.proxyHost");  
    System.getProperties().remove("http.proxyPort");  
    AxisProperties.setProperty("http.proxyHost", null);  
    AxisProperties.setProperty("http.proxyPort", null);
Run Code Online (Sandbox Code Playgroud)

我读somwhere使用nonProxyHosts.But我很困惑,如果我应该写

System.setProperty("https.nonProxyHosts","secws.secondwsint.com");
Run Code Online (Sandbox Code Playgroud)

要么

System.setProperty("http.nonProxyHosts","secws.secondwsint.com");
Run Code Online (Sandbox Code Playgroud)

http ot https,因为需要绕过的是HTTP,而我们设置代理的是HTTPS.

我也读过一篇博客:

AxisProperties.setProperty("https.proxyHost", "bla1.bla1"); 
AxisProperties.setProperty("https.proxyPort", "8080"); 
AxisProperties.setProperty("https.nonProxyHosts", "secws.secondwsint.com"); 
Run Code Online (Sandbox Code Playgroud)

但再一次让天使用https.nonProxyHosts或http.nonProxyHosts

哪一个在我的java程序中使用是可取的,System.setProperty或者更AxisProperties.setProperty重要的是我应该使用http ot https来编写该代码行此外,还有其他选择吗?

java proxy axis web-services proxy-classes

3
推荐指数
1
解决办法
1万
查看次数

使用Proxy时,为什么Kotlin会抛出IllegalArgumentException

这是Kotlin等效的Java代码,使用InvocationHandler:

override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {
    println("before httprequest--->" + args)
    val ret = method!!.invoke(obj, args)
    println("after httprequest--->")
    return ret
}
Run Code Online (Sandbox Code Playgroud)

Java代码:

public Object invoke(Object o, Method method, Object[] args) throws Throwable {
    System.out.println("jdk--------->http" + args);
    Object  result=method.invoke(target, args);
    System.out.println("jdk--------->http");
    return result;
}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下args都是null,但是如果我运行它,Kotlin代码就会给出异常

Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
Run Code Online (Sandbox Code Playgroud)

Kotlin使用标准Java类的原因是什么?

java proxy-classes kotlin

3
推荐指数
1
解决办法
1110
查看次数

用于访问其他类的项作为属性的代理类(__getitem__无限递归)

我有一个类LabelMapper(一个boost::python类),它实现了字典协议.我想有一个代理类,它将使用属性来访问该dicionary.我已经看过许多重写的帖子__setitem__,__getitem__但我似乎无法做到正确.

天真的方法(下面)导致无限递归,因为self.mapper调用LabelMapperProxy.__getattr__,反过来需要self.mapper等等.

class LabelMapper(object):
   def __init__(self): self.map={}
   def __getitem__(self,key): return self.map[key]
   def __setitem__(self,key,val): self.map[key]=val
   def __delitem__(self,key): del self.map[key]

class LabelMapperProxy(object):
   def __init__(self,mapper): self.mapper=mapper
   def __getattr__(self,key): return self.mapper[key]
   def __setattr__(self,key,val): self.mapper[key]=val
   def __delattr__(self,key): del self.mapper[key]

lm=LabelMapper()
lm['foo']=123

# construct the proxy
lmp=LabelMapperProxy(mapper=lm)
print lmp.foo                    # !!! recursion
lmp.bar=456
print lmp.bar,lm['bar']
Run Code Online (Sandbox Code Playgroud)

解决办法是什么?也许在标准库中预先煮好这样的代理?

python proxy-classes

2
推荐指数
1
解决办法
781
查看次数

为什么代理不用于自动装配

我找不到为什么每个自动装配的bean都没有被代理自动装配的原因.我知道因为@Transactional注释不起作用,我在eclipse调试期间检查了自动装配的组件.当然,每个组件都实现了一些接口,我使用@Autowired与接口相关的注释.我只有一个aop配置:

<tx:annotation-driven transaction-manager="transactionManager" />
Run Code Online (Sandbox Code Playgroud)

我使用JPA与hibernate,spring-mvc,spring-webflow,spring-security和spring-data.扩展的接口org.springframework.data.repository.CrudRepository由代理自动装配.但我的组件不是.例如,我有类MyClass实现MyInterface:

@Service
public class MyClass implements MyInterface {
@Autowired
MyCrudReposiotry reposiotry;
....
}
Run Code Online (Sandbox Code Playgroud)

如果我在某处自动装配MyInterface:

@Autowired
MyInterface mi;
Run Code Online (Sandbox Code Playgroud)

然后mi只是MyClass对象的引用,存储库是对代理的引用org.springframework.aop.framework.JdkDynamicAopProxy.非常有趣的是,在测试中mi是对代理的引用.我的测试上下文不包含web-flow和mvc配置.

也许有一些间接的aop配置我应该检查.什么可以通过代理关闭自动装配?

spring proxy-classes

2
推荐指数
2
解决办法
3401
查看次数

hashables的瘦代理类

我需要一些薄的包装器对象来标记字典键,例如:

d = {
  Required('name'): str,
  Optional('age'): int,
}
Run Code Online (Sandbox Code Playgroud)

这些包装器应该像包装对象一样(比较,散列等):

marked = Required('name')
marked == 'name'  #-> True
d[marked] = 'hello'
d['name']  #-> 'hello'
Run Code Online (Sandbox Code Playgroud)

使用一个额外的属性:它应该记住添加的类:

isinstance(marked, Required)  #-> True
Run Code Online (Sandbox Code Playgroud)

添加的类应该有自定义方法.

这实际上就像是可混合物体上的混合物.


我不喜欢那些模仿所有特殊属性并考虑以下想法的重量级代理模式:

class Wrapper(object):
    def __new__(cls, value):
        value_type = type(value)
        Type = type(
            value_type.__name__,  # same name
            (cls, value_type),  # Wrapper + bases
            {})
        Type.__new__ = value_type.__new__  # prevent recursion
        return Type(value)

    # Override method
    def __repr__(self):
        return 'Wrapper({})'.format(self)
Run Code Online (Sandbox Code Playgroud)

好主意?

python proxy-classes

2
推荐指数
1
解决办法
94
查看次数

在golang中,我如何覆盖嵌入式struct的方法

代码在这里

package main

import "fmt"

func main() {
    t16()
}

type Base struct {
    val int
}
func (b *Base)Set(i int) {
    b.val = i
}
type Sub struct {
    Base
    changed bool
}

func (b *Sub)Set(i int) {
    b.val = i
    b.changed = true
}
func t16() {
    s := &Sub{}
    s.Base.Set(1)
    var b *Base = &s.Base
    fmt.Printf("%+v\n", b)
    fmt.Printf("%+v\n", s)
}
Run Code Online (Sandbox Code Playgroud)

我想让Sub充当Base,但是当我调用Set时,对于Sub它会标记更改.我知道golang中没有多态或代理,但有没有办法做到这一点,而不影响Base?

更新

我希望当我调用Base.Set它将标记更改,对于用户,他们不知道他们实际上使用Sub,所以我可以监视Base行为.

func t16() {
    s := &Sub{}
    var b *Base = &s.Base
    b.Set(10)
    fmt.Printf("%+v\n", …
Run Code Online (Sandbox Code Playgroud)

polymorphism overriding proxy-classes go

2
推荐指数
1
解决办法
4169
查看次数

构建一个'简单'的php url代理

我需要在我正在构建的Web应用程序中实现一个简单的PHP代理(基于Flash并且目标服务提供程序不允许编辑其crossdomain.xml文件)

任何php专家可以提供以下2个选项的建议吗?此外,我认为,但我不确定,我还需要包含一些标题信息.

感谢您的任何反馈!

选项1

$url = $_GET['path'];
readfile($path);
Run Code Online (Sandbox Code Playgroud)

选项2

 $content .= file_get_contents($_GET['path']);

 if ($content !== false) 
 {  

      echo($content);
 } 
 else 
 {  
      // there was an error
 }
Run Code Online (Sandbox Code Playgroud)

php proxy php4 proxy-classes

1
推荐指数
1
解决办法
7650
查看次数

python koans:类代理

我正在解决蟒蛇的问题.直到第34天我才有任何实际问题.

这就是问题:

项目:创建代理类

在此分配中,创建一个代理类(下面将为您启动一个代理类).您应该能够使用任何对象初始化代理对象.应将代理对象上调用的任何属性转发到目标对象.在发送每个属性调用时,代理应记录发送的属性的名称.

代理类是为您启动的.您将需要添加方法缺少处理程序和任何其他支持方法.Proxy类的规范在AboutProxyObjectProject koan中给出.

注意:这有点棘手,它是Ruby Koans的对应物,但你可以做到!

这是我的解决方案,直到现在:

class Proxy(object):
    def __init__(self, target_object):
        self._count = {}
        #initialize '_obj' attribute last. Trust me on this!
        self._obj = target_object

    def __setattr__(self, name, value):pass


    def __getattr__(self, attr):
        if attr in self._count: 
            self._count[attr]+=1
        else: 
            self._count[attr]=1
        return getattr(self._obj, attr)

    def messages(self):
        return self._count.keys()

    def was_called(self, attr):
        if attr in self._count:
            return True
        else: False

    def number_of_times_called(self, attr):
        if attr in self._count:
            return self._count[attr]
        else: return False
Run Code Online (Sandbox Code Playgroud)

它适用于此测试:

def test_proxy_records_messages_sent_to_tv(self):
    tv = Proxy(Television()) …
Run Code Online (Sandbox Code Playgroud)

python proxy-classes setattr

1
推荐指数
1
解决办法
3146
查看次数

为没有无参数构造函数的类创建动态代理

我想为一个类而不是一个接口创建一个代理。有描述为此目的使用 cglib 或 Javassist 的答案(例如/sf/answers/311499891/),但我遇到了麻烦,因为我对代理感兴趣的类没有无参数构造函数,因此Enhancer.create()抛出异常。查看 Javassist ProxyFactoryjavadoc,它也需要构造函数参数。

显而易见的解决方法是通过反射并传递一个 nulls/0/etc 数组来查找构造函数参数类型。但是如果构造函数抛出异常,这将不起作用。

有没有更好的选择(也许使用其他库)?

java reflection proxy-classes cglib javassist

1
推荐指数
1
解决办法
1023
查看次数

代理实例如何将自身传递给InvocationHandler?

这是Proxy类的方法签名:

Object java.lang.reflect.Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException
Run Code Online (Sandbox Code Playgroud)

我检查代理类中newProxyInstance的源代码,我找不到代理对象将自己传递给InvocationHandler方法的位置

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable;
Run Code Online (Sandbox Code Playgroud)

有人知道吗?

谢谢

java proxy-classes

0
推荐指数
1
解决办法
4205
查看次数