小编rmm*_*ans的帖子

带名称空间解组的JAXB(使用REST服务中的Jersey)

我正试图从Convio的公共api解组一个简单的xml文档.我没有使用以下代码获得任何编译器错误,但它也不会产生结果.值为null.如果我从xml文档中删除模式和命名空间项并从POJO中删除命名空间属性,那么它将运行得很好.我缺少什么能够使用xsd文档/命名空间?

我正在尝试解析的XML示例

<?xml version='1.0' encoding='UTF-8'?>
<getSingleSignOnTokenResponse xsi:schemaLocation="http://convio.com/crm/v1.0 http://service.convio.net/xmlschema/crm.public.v1.xsd" xmlns="http://convio.com/crm/v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <token>abcdefghijklmnopqrstuvwxyz</token>
  <cons_id>0123456789</cons_id>
</getSingleSignOnTokenResponse>
Run Code Online (Sandbox Code Playgroud)

和带注释的POJO:

@XmlRootElement(name = "getSingleSignOnTokenResponse", namespace = "http://convio.com/crm/v1.0")
public class SingleSignOnResponseBean
{
  @XmlElement(name = "token")
  public String token;
  @XmlElement(name = "cons_id")
  public int consId;
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在使用Jersey来完成实际的工作,但由于我无法使用Jersey解组,我在上面的XML结果的机器上使用静态xml文件手动设置了一个unmarshaller:

    JAXBContext jc = JAXBContext.newInstance(new Class[] {org.orgname.utility.convio.sso.api.SingleSignOnResponseBean.class});
    Unmarshaller u = jc.createUnmarshaller();
    SingleSignOnResponseBean bean2 = (SingleSignOnResponseBean) u.unmarshal(new File("C:/token.xml"));
    System.out.println(bean2.token);
Run Code Online (Sandbox Code Playgroud)

这可能非常简单,我只是没有看到为什么如果定义了架构和命名空间元素它将无法工作.我已经看到了一些关于设置某种SAX过滤器去除命名空间的评论,但由于我是通过直接来自泽西的REST调用进来的,所以我不相信我有机会这样做.有任何想法吗?

java jaxb jersey

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

JNLP:在签名代码中加载未签名的代码

我们在克服Java webstart的混合代码错误时遇到了困难.总之,我们有我们的主要JNLP文件,我们已经签署了它直接加载的所有代码.我们已将all-permissions选项添加到主JNLP中.它加载的主类也来自一个签名的jar.

当主要类开始时,它会触发一些需要加载从JNLP B中提取的未签名资源的东西.JNLP B的资源都没有签名,也不需要任何特殊权限.

所有已签名的代码都是基于Oracle的混合代码文档设置的,并且jar文件在签名之前已经设置了"Trusted-Library:true"的清单.

当尝试通过签名代码加载未签名的代码时,我们得到一个类未找到错误,如下所示:

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

    Caused by: java.lang.NoClassDefFoundError: org/some/external/package/that/is/not/signed
at org.our.signed.package.main(Main.java:87)
... 9 more

    Caused by: java.lang.ClassNotFoundException: org.some.external.package.that.is.not.signed
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 10 more
Run Code Online (Sandbox Code Playgroud)

以下是JNLP中的情景:

JNLP答:(总结)

<jnlp spec="1.5+" codebase="...." href="......">
  <information>
   ...etc
  </information>
   <security>
     <all-permissions/> …
Run Code Online (Sandbox Code Playgroud)

java jnlp code-signing classloader

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

标签 统计

java ×2

classloader ×1

code-signing ×1

jaxb ×1

jersey ×1

jnlp ×1