JAX-RS(REST Easy)を使ってウェブAPIを作成しています。
あるシステムの<form>からデータを受け取るAPIを作成しているのですが、日本語が文字化けしてしまいます。
そのシステムの画面の文字コードはShiftJISです。

@Path("test")
public class TestApi {

    @POST
    @Path("hoge")
    @Produces("text/html")
    public String hoge(@FormParam("name") name) {
        ...
    }
}

上記のようなコードなのですが、<form>から "a" という文字を送り、上記のAPI上でEclipseのデバッガからnameの値を見てみると、きちんと"a"が入っています。

しかし "あ" を送ると、" " という空白?文字になってしまいます。
なお、文字列の長さは2であり、codePointAtを使って中を覗いてみると

name.codePointAt(0)  -> 130
name.codePointAt(1)  -> 160

となっています。
まさにこれはShiftJISの「あ」ですので、これをbyte配列に変換すれば、「ShiftJIS文字列 "あ" のbyte配列から文字列を生成する」ということはできますので、一応、問題は解決します。

byte[] bytes = new byte[name.length()];
for (int i = 0; i < name.length(); i++) {
    bytes[i] = (byte)(name.codePointAt(i));
}

String name2 = new String(bytes, "sjis");

ただShiftJISの文字列をJavaで受け取りたいだけなのに、ここまでしなければならないのでしょうか?
他により良い手段というか、なにかアノテーション一発で文字コードを指定できるとか、そういう方法があれば知りたいです。