本人现遇到一问题,我是java白痴,望详细指导。
当链接到xxx.jsp文件时 该jsp文件调用了java代码。 我想在xxx.jsp文件调用运行该java文件时,把JAVA_HOME的路径临时改变成指向java32bit(我环境默认的是java64bit,但是该java代码必须通过java32bit来运行). 请问在jsp代码中怎么样实现(能实现这功能吗???)

解决方案 »

  1.   

    不能。只能尝试两种方案:
    1、将该32bit程序单独用另一个JVM启动,然后提供远程调用方法,比如WS或EJB啥的;
    2、在JSP中,用Runtime来借助32bit的JVM独立运行该Java文件,并通过getInputStream()或其它方式搜集运行结果。
      

  2.   


    我看第二种方法还挺靠谱的,怎么用runtime来借助32bit的JVM独立运行该java文件呢。
      

  3.   

    +
    单独用io流读取class,然后用反射、classLoader去运行
    需求挺怪异的
      

  4.   


    没办法 AIX下只支持 用32位java加载 一个本地库,那本地库好像又只有32位的~~
    不懂java的我 表示看你们的解释方法 压力大大的
      

  5.   

    去Google下有大把样例的,大致是:
      Process p = Runtime.getRuntime().exec(new String[]{"C:\jdk\bin\java.exe", "其它启动参数"});然后:
      InputStream is = p.getInputStream(); // 程序的正常输出会在这里。
      InputStream err = p.getErrorStream(); // 如果发生异常,异常信息会在这里。
      

  6.   

    runtime的方式治标不治本
    首先jsp调用java,那么这个java就是一个页面的javabean,如果这个javabean是一个独立的处理还好(处理结果是否需要在64位机重构也要考虑),如果需要跟页面互动,甚至有可能需要request,session以及一些web容器的上下文信息,单纯的runtime如何能胜任?
    如果是系统移植,那么可以重新编译源码(64位机编译),如果没有源码,那么可以考虑服务调用,即32位jvm启动32位的服务,64位机去调用服务(服务之间的传输协议可以自己控制)
      

  7.   


    没有源码。32位的服务就 这个jsp文件调用的一个java文件。
    我就是不知道怎么控制 当需要用32位的jvm启动32位的服务的时候,让系统临时将32位的jvm作为默认的JAVA_HOME。 你说那服务调用是个啥概念? 服务之间的传输协议自己控制来干嘛? 我没看懂呢大神!!!!!!!!!!!
      

  8.   

    8楼的建议除了用64bit重新编译外。另一个变通的建议是:整个应用能否都用成32bit的JVM。
    关于服务调用的概念,就是我在1楼所说的方案1。
      

  9.   


    整个服务 需要用64bit运行,除了报错的那个class文件需要32bit运行。
    你的第一种方案 需要写很多代码吧。。还要通信之类的,,我看第一种方案对于我来说还不太现实呀。太复杂了
      

  10.   

    不见得,看你所需要调的那个java功能有多复杂。如果功能不复杂的话,直接用注解做成一个WS调用,是非常快的事情。这是可独立运行的WS(发布了一个echo()方法,传什么参数进来就直接返回回去):@WebService(targetNamespace = "http://localhost/ws")
    @SOAPBinding(style = SOAPBinding.Style.RPC)
    public class JavaWS {
        @WebMethod
        public String echo(String msg) {
            System.out.println("echo(" + msg + ")");
            return msg;
        }    public static void main(String[] args) {
            Endpoint.publish("http://localhost/ws", new JavaWS());
        }
    }
    运行后,浏览器可直接访问其服务说明: http://localhost/ws?wsdl