Jaxb unmarshal适用于调试,但不适用于运行时

时间:2016-12-20 15:06:53

标签: java eclipse jaxb unmarshalling

我正在尝试使用ACS(思科安全访问控制系统)来使用代码管理网络设备中的用户。我已经下载了随产品提供的示例,并以此为基础构建了我的代码。

当我在调试模式下测试它时,一切都很好但是当我将private static User getUserByName(RestFacade restFacade, String name) { User user = null; String url = "/Rest/Identity/User/name/"; url = url.concat(name); HttpResponse response = restFacade.get(url); try { byte buffer[] = new byte[8192]; int read = 0; StringBuffer responseBody = new StringBuffer(); HttpEntity entity = response.getEntity(); if (entity != null) { InputStream content = response.getEntity().getContent(); while ((read = content.read(buffer)) != -1) { responseBody.append(new String(buffer, 0, read)); } } ByteArrayInputStream bais = new ByteArrayInputStream(responseBody .toString().getBytes()); Unmarshaller unmarshaller = JAXBContext.newInstance(User.class).createUnmarshller(); user = (User) unmarshaller.unmarshal(bais); } catch (Exception e) { e.printStackTrace(); } return user; } 文件放在Jboss Web Server中并尝试从另一个应用程序执行main方法时,我收到此错误:

execute_async_script()

我的代码是:

 js = '''
    var callback = arguments[0];
    var theForm = document.forms['theFormId'];
    data = new FormData();
    data.append('eventTarget', "''' + target + '''"); // this is the id of the file clicked
    data.append('otherFormField', theForm.otherFormField.value);

    var xhr = new XMLHttpRequest();
    xhr.open('POST', theForm.action, true);
'''

for cookie in driver.get_cookies():
    js += ' xhr.setRequestHeader("' + cookie['name'] + '", "' + cookie['value'] + '"); '

js += '''
    xhr.onload = function () {
        callback(this.responseText);
    };
    xhr.send(data);
'''

driver.set_script_timeout(30)
file = driver.execute_async_script(js)

我发现这样的错误的几乎所有解决方案,都说我在试图调用或更改xsd的Rest方法中改变了一些东西,但是我无法访问那些..

奇怪的是,当我从Eclipse调试但不在运行时调试时它可以工作。也许我正在使用的JAXB有不同的版本?我怎么能确定哪个罐装满了?

谢谢你, 伊戈尔。

1 个答案:

答案 0 :(得分:0)

这听起来像您用于调试的开发环境,而您的目标应用程序服务器具有JAXB类/库和/或使用过的XSD的不同版本。

文档(http://www.cisco.com/c/en/us/td/docs/net_mgmt/cisco_secure_access_control_system/5-3/sdk/acs_sdk/rest.html)指定了三个XSD(公共,身份和查询)。

您是否已验证您拥有(或已下载)的版本是否与目标应用程序服务器上生成的JAXB类相匹配?