小编Mik*_*ail的帖子

如何使用JAXB使用Jersey 1.6生成JSON输出

@XmlRootElement
public class Todo {
    private String s = "test";

    public String getS() {
        return s;
    }

    public void setS(String s) {
        this.s = s;
    }

}
Run Code Online (Sandbox Code Playgroud)

和服务:

@Path("/test")
public class Service {

    @GET
    @Produces({MediaType.APPLICATION_JSON })
    public List<Todo> getAllGadgets() {
        return Arrays.asList(new Todo[] { new Todo() });
    }

}
Run Code Online (Sandbox Code Playgroud)

我的web.xml:

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.test</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

如果我将MediaType.APPLICATION_XML设置为生成注释,则所有这些都有效.但对于JSON,我得到以下异常:

严重:映射异常响应:500(内部服务器错误)javax.ws.rs.WebApplicationException:com.sun.jersey.api.MessageException:Java类java.util.Arrays $ ArrayList和Java类型java的消息体编写器找不到.util.List和MIME媒体类型application/json

我使用Jersey 1.6,根据教程,JSON格式应该可以在没有任何额外编程的情况下使用JAXB.怎么了?

java rest json jax-rs jackson

27
推荐指数
4
解决办法
4万
查看次数

使用Deflate压缩和解压缩字符串

我需要压缩和解压缩字符串

这是代码:

public static byte[] ZipStr(String str)
{
    using (MemoryStream output = new MemoryStream())
    using (DeflateStream gzip = new DeflateStream(output, CompressionMode.Compress))
    using (StreamWriter writer = new StreamWriter(gzip))
       {
                writer.Write(str);
                return output.ToArray();
       }
}
Run Code Online (Sandbox Code Playgroud)

public static string UnZipStr(byte[] input)
{
    using (MemoryStream inputStream = new MemoryStream(input))
    using (DeflateStream gzip = new DeflateStream(inputStream, CompressionMode.Decompress))
    using (StreamReader reader = new StreamReader(gzip))
       {
        reader.ReadToEnd();
        return System.Text.Encoding.UTF8.GetString(inputStream.ToArray());
       }
}
Run Code Online (Sandbox Code Playgroud)

似乎UnZipStr方法中存在错误.有人能帮助我吗?

.net c# deflatestream

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

在没有IllegalMonitorStateException的情况下解锁ReentrantLock

我有一段代码(简化):

if(reentrantLockObject.isLocked()) {
       reentrantLockObject.unlock();
}
Run Code Online (Sandbox Code Playgroud)

其中reentrantLockObject是java.util.concurrent.locks.ReentrantLock.有时我得到IllegalMonitorStateException.它接缝在check和unlock()调用之间释放了锁.如何防止此异常?

java concurrency locking

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

如何将Jersey REST服务的JSON响应反序列化为java对象的集合

我编写了使用Jersey Client API向REST服务发出GET请求的客户端.响应是对象的集合,我需要反序列化它.这是我的代码:

    ClientConfig clientConfig = new DefaultClientConfig();
    clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
            Boolean.TRUE);
    Client client = Client.create(clientConfig);
    WebResource r = client
            .resource("http://localhost:8080/rest/gadgets");
Run Code Online (Sandbox Code Playgroud)

和表示"小工具"模型的类(使用@XmlRootElement进行JAXB处理注释):

    @XmlRootElement
public class Gadget {

    private String url;
    private String title;
    private String name;

    public Gadget() {
}


public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}


public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getName() {
    return name;
}

    public void setName(String …
Run Code Online (Sandbox Code Playgroud)

java json jersey

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

XSL导入导致Web应用程序中的FileNotFoundException

我在websphere5下有一个简单的Web应用程序.在appDir\WEB-INF\classes\我有这些文件:

  • main.xslt
  • templates.xslt

main.xslt 包含指令

<xsl:import href="templates.xsl" />
Run Code Online (Sandbox Code Playgroud)

main.xslt在Java代码中使用时应用程序失败.如果它们都在同一个文件夹(WEB-INF\classes\)中,我应该如何指定导入的XSL文件的路径?

例外文本:

java.io.FileNotFoundException:d:\ Program Files\WebSphere\AppServer1\templates.xsl(系统找不到指定的文件.)

java xml xslt

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

捕获 java 进程终止的时间

当有人通过任务管理器或任务杀控制台命令杀死我的应用程序(java,但这并不重要)时,我如何捕获?

我知道我无法在我的应用程序中捕捉到这一点,但也许我可以通过操作系统(当然是 Windows)的一些钩子来做到这一点。也许easyhook库(http://www.codeplex.com/easyhook)可以帮助我,但我在那里找不到例子。我们的应用程序经常在客户服务器上死掉,我只想知道是谁(或什么)杀死了它。我们确定这不是应用程序问题,似乎 java.exe 进程已从任务管理器中终止

java windows easyhook

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

如何查找花费大量时间的SQL Server查询?

我的申请时间超过3天.我可以在日志中看到应用程序执行一些SQL查询的时刻,这花了很多时间,可能是因为一些数据库锁.

我听说有这种情况的查询.因此,我需要能够询问所有查询,例如超过30分钟.可能吗?

sql sql-server

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

XSLT文档('')函数不起作用

据我所知,使用空字符串作为参数的XSLT函数document()应该读取当前的XSLT文档.但是以下代码不起作用:

  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <state>test2</state>
   <xsl:template match="/">
      test1
      <xsl:value-of select="document('')/*/state"/>
    </xsl:template>
   </xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

当我将这个XSLT应用于某些XML(仅作为示例)时,我只有"test1"作为输出.为什么排队

 <xsl:value-of select="document('')/*/state"/>
Run Code Online (Sandbox Code Playgroud)

不打印"test2"?

xml xslt

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

当有人杀死java.exe进程时,我怎么能抓住时机?

控制台java应用程序 有人通过任务管理器杀死java.exe进程.在申请终止之前,我如何写入记录某些信息?

Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    public void uncaughtException(Thread t, Throwable e) { ..... }
}); 
Run Code Online (Sandbox Code Playgroud)

要么

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { ..... }
});
Run Code Online (Sandbox Code Playgroud)

不要在这种情况下执行

java

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

标签 统计

java ×6

json ×2

xml ×2

xslt ×2

.net ×1

c# ×1

concurrency ×1

deflatestream ×1

easyhook ×1

jackson ×1

jax-rs ×1

jersey ×1

locking ×1

rest ×1

sql ×1

sql-server ×1

windows ×1