Windows Defenderの定義更新はWindows Updateに統合されていて
自動更新させようとするとWindows Updateの自動更新も起動してしまいます。
そうすると勝手に再起動されて困ります。
そんなときに試したいのが
Windows Defenderの定義のみを更新するコマンドです
これ、
"C:\Program Files\Windows Defender\MpCmdRun.exe" -SignatureUpdate
私は、プロンプトの表示を避けたいので
下のようなvbsファイルを作成してTaskスケジューラに登録しています
WindowsDefenderUpdate.vbs :
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c ""C:\Program Files\Windows Defender\MpCmdRun.exe"" -SignatureUpdate", vbhide
2013年10月21日月曜日
2013年10月5日土曜日
JAXB アノテーションを利用したJSON マッピング
Jerseyを使っているとレスポンス用のJSONの定義クラスに
アノテーションの@XmlTransitで省略したり
@XmlElement(name="element")で名前変更したりして
ObjectをJAXB経由でJSONに自動でパースさせてたりしますが
その定義を他でも使いまわして各々の処理でJSON文字列にパースする場合には
JacksonJAXBAnnotations
を利用すればいいです。
これは利用すればJAXBアノテーションを利用したマッピングが可能です。
mavenでpom.xmlに追加
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
Javaでは次のようにするればobjをJSONにパース可能
例ではやってないけどObjectMapperはthread safeなので使いまわしましょう
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectWriter;
import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
…
JaxbAnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
ObjectWriter ow = new ObjectMapper().setAnnotationIntrospector(introspector).writer()
.withDefaultPrettyPrinter();
String json = ow.writeValueAsString(obj);
最初は、jerseyの内部ロジックを利用しようとしましたが
ひとつのオブジェクトしかないリストがオブジェクトでパースされる問題が発生したり
いちいちクラスタイプ指定しないといけないので面倒でやめました
ちなみに 最初はこんなかんじにしてました
private Class[] types = {
MyClass.class,
ArrayList.class,
};
String result = null;
JSONConfiguration config = JSONConfiguration.natural().build();
JSONJAXBContext ctx = new JSONJAXBContext(config, types);
JSONMarshaller m = ctx.createJSONMarshaller();
StringWriter sw = new StringWriter();
m.marshallToJSON(xmlObj, sw);
result = sw.toString();
return result;
JAXBContextResolverと似たような感じですね
POJOMappingFeatureで問題はどうにかなるかと思ったんですが
JacksonJAXBAnnotationsを使ったほうが楽だし早い
アノテーションの@XmlTransitで省略したり
@XmlElement(name="element")で名前変更したりして
ObjectをJAXB経由でJSONに自動でパースさせてたりしますが
その定義を他でも使いまわして各々の処理でJSON文字列にパースする場合には
JacksonJAXBAnnotations
を利用すればいいです。
これは利用すればJAXBアノテーションを利用したマッピングが可能です。
mavenでpom.xmlに追加
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>
Javaでは次のようにするればobjをJSONにパース可能
例ではやってないけどObjectMapperはthread safeなので使いまわしましょう
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectWriter;
import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
…
JaxbAnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
ObjectWriter ow = new ObjectMapper().setAnnotationIntrospector(introspector).writer()
.withDefaultPrettyPrinter();
String json = ow.writeValueAsString(obj);
最初は、jerseyの内部ロジックを利用しようとしましたが
ひとつのオブジェクトしかないリストがオブジェクトでパースされる問題が発生したり
いちいちクラスタイプ指定しないといけないので面倒でやめました
ちなみに 最初はこんなかんじにしてました
private Class[] types = {
MyClass.class,
ArrayList.class,
};
String result = null;
JSONConfiguration config = JSONConfiguration.natural().build();
JSONJAXBContext ctx = new JSONJAXBContext(config, types);
JSONMarshaller m = ctx.createJSONMarshaller();
StringWriter sw = new StringWriter();
m.marshallToJSON(xmlObj, sw);
result = sw.toString();
return result;
JAXBContextResolverと似たような感じですね
POJOMappingFeatureで問題はどうにかなるかと思ったんですが
JacksonJAXBAnnotationsを使ったほうが楽だし早い
登録:
投稿 (Atom)