客户端服务器应用程序中出错:找不到java.util.UUID的转换器

客户端服务器应用程序中出错:找不到java.util.UUID的转换器,java,client-server,httpclient,uuid,restlet,Java,Client Server,Httpclient,Uuid,Restlet,我正在开发一个客户机-服务器应用程序。我使用的是Restlet 2.0.3。由于任务繁重,我的客户超时了。我在论坛上搜索,发现切换到Restlet2.2会有所帮助。所以我就这么做了。我将Restlet升级到2.2.1。但现在,我的代码已经停止使用这种方法 public synchronized UUID generateUniqueSessionId(String userAtDomain) { UUID newSessionId = UUID.randomUUID();

我正在开发一个客户机-服务器应用程序。我使用的是Restlet 2.0.3。由于任务繁重,我的客户超时了。我在论坛上搜索,发现切换到Restlet2.2会有所帮助。所以我就这么做了。我将Restlet升级到2.2.1。但现在,我的代码已经停止使用这种方法

public synchronized UUID generateUniqueSessionId(String userAtDomain)
    {
        UUID newSessionId = UUID.randomUUID();
        SessionAttributes sessionAttributes = new SessionAttributes();
        sessionAttributes.setAlive(true);
        sessionAttributes.setFQUserName(userAtDomain);
        loggedInUsers.put(newSessionId, sessionAttributes);
        return newSessionId;
    }
所以我终于返回了UUID。 此代码位于服务器上,并在登录期间调用。下面是我从日志中得到的错误

2015年3月16日11:23:18警告-找不到此对象的转换器:f3d2edda-443c-454d-856a-fb4e7ed9c535

日志中引用的这个对象属于java.util.UUID

客户端调用服务器的代码如下所示

public UUID authenticateUser(String username, String passwd) {

        try {
            String url = RESTLetWebSvcsFactory.getFactoryInstance().getServer_URL() + "login/" + username + "/" + passwd;

            Context context = new Context();

            Client client = new Client(context, Protocol.HTTP);
            ClientHelper helper = new ClientHelper(client);
            helper.getHelpedParameters().set("socketConnectTimeoutMs", "60000");

            ClientResource cr = new ClientResource(url);
            LoginLogoutResource resource = cr.wrap(LoginLogoutResource.class);
            return resource.loginUser();
        } catch (ResourceException re) {
            if (re.getStatus().isConnectorError()) {
                try {
                    RESTLetWebSvcsFactory.enableFallBackServer();
                    String url = RESTLetWebSvcsFactory.getFactoryInstance().getServer_URL() + "login/" + username + "/" + passwd;
                    ClientResource cr = new ClientResource(url);
                    LoginLogoutResource resource = cr.wrap(LoginLogoutResource.class);
                    return resource.loginUser();
                } catch (ResourceException re1) {
                    int statusCode = new RESTLetErrorHandler().handleServerError(re);
                    if (statusCode != -1) {
                        throw new UserCRUDException(statusCode);
                    }
                }
            } else {
                throw new UserCRUDException(new RESTLetErrorHandler().handleServerError(re));
            }
        }
        return null;
    }
注意:UserCrudeException是我自己的例外,而不是JAVA的例外

请帮助我解决这个问题,它可能会阻止从服务器返回UUID,因此我的应用程序无法继续运行


提前感谢

Restlet在引擎盖下使用了一个通用的bean转换来将bean转换为表示(并将表示转换为bean)。因此,您的问题取决于您使用的转换器

我使用扩展名
org.restlet.ext.jackson
(包含这样的bean转换器)和版本2.2.1的restlet进行了测试。我的测试bean描述如下:

public class TestBean {
    private String name;
    private String message;
    private UUID uuid;

    (...)

    public UUID getUuid() {
        return uuid;
    }

    public void setUuid(UUID uuid) {
        this.uuid = uuid;
    }
}
以及以下测试服务器资源:

public class MyServerResource extends ServerResource {
    @Get
    public TestBean ping() {
        TestBean bean = new TestBean();
        bean.setMessage("pong");
        bean.setUuid(UUID.randomUUID());
        return bean;
    }
}
我收到了GET方法的以下内容:

{
    "name":"my name",
    "message":"my message",
    "uuid":"be9e5381-d5c9-4e45-b5c8-4af1f8bdca16"
}
你能提供你使用的转换器吗?以及应用程序中的Restlet依赖项列表

希望它能帮助你,
Thierry

我的代码中没有使用jackson。依赖项-ext-文件上传,servlet,slf4j,xml。我希望这就是你需要的所有信息。你如何序列化你的bean?你能告诉我更多关于你的服务器资源的签名和相关内容的细节吗?谢谢我不知道我们使用了哪种转换器。你能告诉我怎么找到它吗?我已经包括了这4罐restlet。1.org.restlet.ext.fileupload.jar 2.org.restlet.ext.servlet.jar 3.org.restlet.ext.slf4j.jar 4。我认为应该包括一个包含bean转换器的jar(例如,org.restlet.ext.jackson)