新手求助:Axis中带dll的web服务发布

littleBuggy 2007-03-23 03:29:37
我用java写了一个服务,这个服务需要通过JNI调用C++的代码,于是我想发布的这个服务就需要带有dll文件了,现在我想用tomcat+Axis采用定制发布的方法发布这个服务,但是动态链接库在本地机上调用没有问题,可是在客户端调用就总是出错:
faultString: java.lang.reflect.InvocationTargetException
我想可能是动态链接库的问题,请问各位大虾该怎么做啊?
我的服务代码:
public class Buffer
{
public native void BufferApp(String inFile, double distance, String outFile);

public static void Buffer(String inFile, double distance, String outFile)
{
System.loadLibrary("Buffer");
new Buffer().BufferApp(inFile, distance, outFile);
}
}
调用的Buffer.dll文件我放在与Buffer.class同一个文件夹下
客户端程序:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;

public class BufferClient
{
public static void main(String[] args)
{
try
{
int arc = args.length;
if(arc != 3)
{
System.out.println("Wrong parameter number!");
System.out.println("Buffer [InFilePath] [distance] [OutFilePath]");
}
double distance = Double.valueOf(args[1].toString());
String endpoint = "http://localhost:8080/axis/Buffer.jws";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("urn:Buffer","Buffer"));
call.invoke(new Object[]{args[0],distance,args[2]});
System.out.println("That is OK!");
}catch(Exception e){
e.printStackTrace();
}
}
}
...全文
335 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
littleBuggy 2007-03-27
  • 打赏
  • 举报
回复
既然自己解决了 分我自己拿了啊
littleBuggy 2007-03-27
  • 打赏
  • 举报
回复
5555555555555 没人回答 只好自己解决了
下面是自己瞎摸出来的经验,有不对的地方请大家指正:
第一:不会用带包的java程序,生成了.h文件之后不能随便在java程序中加包;会用包也不要随便更改包的名字;
第三:如果没有包,就需要把class文件和dll文件一起放在classes文件下面;有包要创建相同名字的包放在classes下面;
第四:要将dll文件放到jre的bin中

24,923

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧