我必须生成一个xml元素,它可以具有任何"基本类型"(xsd:string,xsd:boolean等)作为值.例子:
<field xsi:type="xsd:string" name="aString">String Value</field>
<field xsi:type="xsd:dateTime" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
...
Run Code Online (Sandbox Code Playgroud)
所以,我使用这个实现使JAXB决定xsi:type原始类型:
public class Field {
@XmlAttribute
private String name;
@XmlElement
Object value;
}
Run Code Online (Sandbox Code Playgroud)
并且它按预期工作但所有java.util.Date获取类型xs:dateTime...
现在我只想在'value'对象是java.util.Date的一个实例时才改变marshaller的行为来获取这样的字段:
<field xsi:type="xsd:date" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个适配器,但如果我尝试这个:
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
Object value;
Run Code Online (Sandbox Code Playgroud)
适配器必须处理java.lang.Object类型
public class DateAdapter extends XmlAdapter<String, Object> {...}
Run Code Online (Sandbox Code Playgroud)
但我不想为所有其他对象(整数,双等)松散JAXB marshallers ...
有一种方法可以为元素的特定子类型设置适配器吗?
我正在配置一个多模块 maven 项目,该项目强制在验证阶段执行声纳:声纳。
我还使用声纳的 build-breaker-plugin 来避免在声纳抛出一些警报时部署模块。
这种方法的问题是开发人员应该去声纳服务器检查警报。这还不错,但是如果多个用户尝试同时分析同一个模块,则不可能知道上次/当前分析是否有您的警报。
上下文:我们有一个 CI 系统,每小时构建所有模块。因此,有时这会与某些开发人员部署(强制分析)发生冲突
恕我直言,只有 CI 系统应该将分析提交给声纳服务器,因为 CI 具有持续提交和部署的代码。但是开发人员应该只在本地检查他的更改。
那么,为什么我们要在开发人员构建中强制进行分析?避免部署不遵守代码质量阈值的模块(声纳的 build-breaker 插件对此有所帮助)。
有没有办法配置 maven-sonar-plugin 来做到这一点?
我正在使用webapp工作:
经过大量的工作,我设法删除了对类加载器的所有强引用,现在它是垃圾收集器的候选者.那么,内存泄漏解决了吗?当然不是!因为在几次热部署之后,由于PermGen空间而出现了OOME.
感谢Yourkit,我能够检查是否WebappClassLoader是Pending Finalization,这意味着它正在终结队列中等待(实际上,不是WebappClassLoader自己而是他的指示对象之一).检查内存快照我发现了几个Finalizer对Oracle Coherence类的引用......
这似乎是"okey":Coherence对象正在等待垃圾收集,这要归功于删除所有强引用(删除所有一致性线程,删除java安全提供程序等)所做的所有艰苦工作.我想这里没什么可做的.
所以,我正在考虑一些finalize破坏某些东西然后不允许清空终结器队列的执行.但奇怪的是,使用JMX或jmap -finalizerinfo终结器队列似乎是空的!这一切都很混乱所以我一直在其他地方搜索......
你认为这是可以做的吗?我读过一些关于CGLIB增强finalize方法的内容.如果我有权访问,Enhancer我可以创建一个回调过滤器,如下所述,但我不知道如何使用Spring AOP来管理它.
好吧,在其他地方搜索,我发现了几个弱引用java.lang.reflect.Proxy.这些是jdk动态代理吗?或者它们与Introspection内存泄漏有关?弱参考?

信息:我正在使用Spring的上下文监听器来刷新instrospector的缓存(java.beans.Introspector.flushCaches()).我还能做些什么呢?
让我们继续.
然后,我们还有其他几个弱引用java.io.ObjectStreamClass$Caches.我的很多业务对象都有这些弱引用.

也许我需要刷新这些缓存.但是怎么样?
然后我们有这些与之相关的弱参考com.sun.internal.ResourceManager,java.util.logging.Logging和java.lang.reflect.Proxy

我可以用这个弱引用做什么?我是否需要担心这个问题,或者问题出现在终结器队列中?任何线索都会有所帮助......真的:-D
Ah, another thing, I found a weak reference from a tomcat "main" thread that will …
我需要使命名卷使用docker-compose执行命令的文件夹的相对路径.
这是docker-compose.yml中的卷定义
volumes:
esdata1:
driver: local
driver_opts:
type: none
device: ./esdata1
o: bind
Run Code Online (Sandbox Code Playgroud)
似乎docker-compose不创建文件夹,如果它不存在,但即使在lauching docker之前创建文件夹我也总是收到此错误:
ERROR: for esdata Cannot create container for service esdata: error while mounting volume with options: type='none' device='./esdata1' o='bind': no such file or directory
Run Code Online (Sandbox Code Playgroud)
注意:这可能很愚蠢,但是esdata使用指定卷的服务
esdata:
...
volumes:
- esdata1:/usr/share/elasticsearch/data
...
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?
也许相对路径./没有指向执行的文件夹docker-compose(我试过~/使用相对于用户家的文件夹,但我得到了同样的错误).
提前致谢,
PS:如果我使用绝对路径,它就像一个魅力
我正在尝试使用提供商公开的Web服务.提供者在他的结尾有一个严格的检查,请求xml不应该包含没有值的标签.
我正在使用Jax-WS.如果我没有在特定对象中设置值,则它将作为空标记发送,并且标记存在.PFB这个例子说明了我的问题.
客户端XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:host="http://host.testing.webservice.com/">
<soapenv:Header/>
<soapenv:Body>
<host:testingMathod>
<arg0>
<PInfo>
<IAge>45</IAge>
<strName>Danny</strName>
</PInfo>
<strCorrId>NAGSEK</strCorrId>
<strIpAddress></strIpAddress>
</arg0>
</host:testingMathod>
</soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)
在这里,没有给出IpAddress的值,因此发送了空标签.
因此,请告诉我们在删除请求xml中的空标记时需要做些什么.Handlerchain是同一个唯一的解决方案吗?
谢谢,Naveen.
jaxb ×2
xml ×2
classloader ×1
docker ×1
java ×1
jax-ws ×1
maven ×1
memory-leaks ×1
moxy ×1
sonarqube ×1
tomcat ×1
web-services ×1
yourkit ×1