- PR -

axis上でのJMagick

1
投稿者投稿内容
おでん
会議室デビュー日: 2004/01/13
投稿数: 4
投稿日時: 2004-01-13 17:55
JMagickを使ったWebサービスを構築しているのですが、どうしてもうまくいきません。
Webサービス自体もはじめてなので、うまく切り分けができず困っています。ご教授いただけたらと思います。
環境は以下です。
---
Windows XP Professional
jmagick 5.5.6-0
imagemagick 5.5.6-Q16
tomcat 4.1
j2sdk1.4.1_04
axis 1.1
---
jmagick.jarは%TOMCAT_HOME%\webapps\axis\WEB-INF\lib 配下に、
jmagick.dllはC:\WINDOWS\System32 配下に配置しました。

サービスプログラムは以下です。
---
package test;
import java.io.*;
import java.util.*;
import magick.*;

public class MagickTest {
private String result;
public MagickTest(){
result = "output.jpg";
}
public String getNavigationURL(String[] args){
int x1;
int y1;
try{
x1 = Integer.parseInt(args[0]);
y1 = Integer.parseInt(args[1]);
System.out.println(x1+","+y1);

//背景画像ファイル読込
System.out.println("mapfile read start");
ImageInfo mapinfo = new ImageInfo("C:\\home\\image\\back.jpg");
System.out.println("mapfile read end");

//アイコンファイル読込
System.out.println("iconfile read start");
ImageInfo iconinfo1 = new ImageInfo("C:\\home\\image\\icon.gif");
System.out.println("iconfile read end");

//MagickImage作成
MagickImage image = new MagickImage(mapinfo);
MagickImage icon1 = new MagickImage(iconinfo1);

//icon合成
image.compositeImage(1, icon1, x1, y1);

//イメージファイルのファイル名をセット(変更)
image.setFileName("C:\\home\\image\\output.jpg");

//イメージファイルを作成
image.writeImage(mapinfo);
}catch(MagickApiException mae){
System.out.println(mae.toString());
mae.printStackTrace();
}catch(MagickException me){
System.out.println(me.toString());
me.printStackTrace();
}catch(Exception e){
System.out.println(e.toString());
e.printStackTrace();
}
return result;
}
}
---

上記をWSDDを作ってデプロイし、Java2WSDLとWSDL2Javaを使ってできたファイルを利用して、以下のクライアントプログラムを作成しました。
---
package MagickTestService_pkg;

public class MagickTestClient {
public static void main(String[] args) {
try {
MagickTestService myService = new MagickTestServiceLocator();
MagickTest myInstance = myService.getAxisServlet();
//((AxisServletSoapBindingStub)myInstance).setMaintainSession(true);
System.out.println(myInstance.getNavigationURL(args));
} catch (Exception ex) {
System.out.println(ex.toString());
ex.printStackTrace();
}
}
}
---

実行してみたところ、以下のエラーが出力されました。
---
java.lang.reflect.InvocationTargetException
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.reflect.InvocationTargetException
faultActor:
faultNode:
faultDetail:

java.lang.reflect.InvocationTargetException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:260)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:169)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:1015)
(以下略)
---
tomcatを起動したプロンプトに出力されたメッセージを見ると、"mapfile read start"以降が出力されていないようなので、JMagickのところから先に進んでいないようです。
その他、Exception等のメッセージは出力されていませんでした。

今のところ、
-JMagick自身
-上記サービスプログラムでJMagick使用部分を削除したもの
は意図したとおり動作することを確認しています。

ご存知の方がいらっしゃいましたら、よろしくお願いいたします。
おでん
会議室デビュー日: 2004/01/13
投稿数: 4
投稿日時: 2004-01-15 15:00
webサービス側で、Throwableをcatchするようにすると
SOAPのレスポンスがくるようになりました。
くだらない理由ですみません。

問題がもう少し具体的になりましたので、別スレッドを立てさせていただきます。
1

スキルアップ/キャリアアップ(JOB@IT)