「java发布方式」Java程序发布

博主:adminadmin 2023-01-24 12:12:07 464

本篇文章给大家谈谈java发布方式,以及Java程序发布对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java程序怎么发布

首先要导出,打包成jar文件,然后用Jsmooth让其变为exe文件,这个exe文件只有在安装jdk的环境下才能运行

如何在Java中快速发布WebService服务

在Java中快速发布WebService服务方法:

一、通过Axis2提供的模板自动发布

这种方法非常简单,只要下载Axis包后从里面的“axis-1_4\webapps”中找到axis站点,将它拷出来放到你要部署的tomcat/webapps下,再将要发布的java类放到axis文件夹里,再将文件名的后缀改为“jws”,这样一个webservice就发布成功了。访问时按照路径“类名.jws?wsdl”就可以了。

怎么样?这种方法非常是不是非常简单?对,它特别适合初学java或者是手头没有很好的SDE开发和调试工具的时候。

但很明显,这种方法不太好调试,又不能凸显您的专业水准,更不能集成到您的开发环境里。所以如果您不是很急,就可以用下面一种办法来发布:

二、通过JWS来手动发布

步骤如下:

1、在Eclipse里新建一个Dynamic Web Project,如下图所示(相信这一步您比我还熟,所以会的可以略过):

2、在“Project Name”中输入工程名称,如“JavaWebService”:

3、一直单击“Next”按钮直到出现如下对话框:

在上面的对话框中一定要注意需要选中“Generate web.xml deployment descriptor”,否则后面再添加就比较麻烦。选中后单击“Finish”按钮即可完成工程创建。

4、引入必须的jar包:

axis.jar、commons-discovery-0.2.jar、commons-logging.jar、jaxrpc.jar、saaj.jar、wsdl4j.jar

最好将jar包拷贝到工程的WEB-INF/lib下后直接引用本工程内的jar包,这样不会导致工程文件夹或jar包所在文件夹移动后读取不到jar包的问题:

分别单击顶层对话框和“Properties”对话框的“OK”按钮完成jar包引用。

5、新建package和java文件,如下图所示:

首先说说com.test.javabean.Student.java这个类。看得出来这个类是个JavaBean,目的是为了封装一个Java的实体类,这样做的好处是万一要把很多变量返回给客户端的话,客户端不至于在方法中声明很多形参来接收,而是通过一个对象来接收。Student.java的实现如下:

[java] view plain copy

package com.test.javabean;

import java.io.Serializable;

public class Student implements Serializable{

private String ID;

private String Name;

private String Sex;

private int age;

public String getID() {

return ID;

}

public void setID(String iD) {

ID = iD;

}

public String getName() {

return Name;

}

public void setName(String name) {

Name = name;

}

public String getSex() {

return Sex;

}

public void setSex(String sex) {

Sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

再来看看com.test.webservice.CStudent.java这个类,定义如下:

[java] view plain copy

package com.test.webservice;

import javax.jws.WebService;

import com.test.javabean.Student;

@WebService

public class CStudent {

public Student getStudent(String name) throws java.rmi.RemoteException{

Student student = new Student();

student.setName(name);

student.setAge(14);

student.setID("25");

student.setSex("Male");

return student;

}

}

为了简单起见,就不涉及到更多的后台查询了,先写死返回结果吧。不知您注意到了没有,这个类跟普通类的区别是在类的顶部加了个“@WebService”声明。对,这样就是个WebService方法了,是不是也很简单?但是这样就得记着在上面引入javax.jws.WebService包。偶对了,这种方式是JDK1.7里增加的方式,所以要想使用这种特性,就得麻烦您把JDK升级到1.7,方法很简单,用绿色版的就可以啦,不用劳烦您把JDK卸了又重装。只需要把JDK放到哪个盘的根目录(这样是为了防止路径中有空格或是括号什么的,否则一旦出问题您就苦逼了),然后把JDK的路径定义为JAVA_HOME,再在path中增加%JAVA_HOME%/bin;就可以了。这样做的好处是可以随时很方便地更换JDK的版本,而不需要卸载后再重新安装。

扯远了。有了WebService的方法体,您还需要再发布一下WebService,所以还得新建一个com.test.servlet.CStudentServlet.java类:

[java] view plain copy

package com.test.servlet;

import java.io.IOException;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.util.Properties;

import javax.jws.WebService;

import javax.servlet.*;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.xml.ws.Endpoint;

import com.test.webservice.CStudent;

public class CStudentServlet extends HttpServlet{

/**

* @see Servlet#init(ServletConfig)

*/

public void init(ServletConfig config) throws ServletException {

// TODO Auto-generated method stub

super.init(config);

System.out.println("正在启动WebService服务:");

Endpoint.publish(";span style="font-family: Arial, Helvetica, sans-serif;"192.168.56.1/spanspan style="font-family: Arial, Helvetica, sans-serif;":8082//spanspan style="font-family: Arial, Helvetica, sans-serif;"JavaWebService/spanspan style="font-family: Arial, Helvetica, sans-serif;"/Student", new CStudent());/span

}

/**

* @see Servlet#getServletConfig()

*/

public ServletConfig getServletConfig() {

// TODO Auto-generated method stub

return null;

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}

public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

System.out.println("进入WSServlet的service()方法");

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

}

}

上面的代码中有处细节不知您注意了没有:把IP地址、端口号、站点名等信息写死到了代码里。对,不仅如此,你这里写的什么IP,就必须用什么IP访问,即便是在本机写成localhost都不可以。jws就是这么奇怪。所以在实际中可以参考一些资料动态获取IP地址和端口号。

对了,您那边代码是不是报错了?对,这是因为您还得做一步操作——添加server和对server组件包的引用,以tomcat为例,方法如下:

找到servers窗口,单击“new server wizard...”链接:

打开如下对话框:

看到了吧?选择Apache下的”Tomcat v7.0 Server“,然后单击”Next“:

在上图中单击右侧”Browse“按钮,找到Tomcat所在的目录,再在JRE中选择1.7的JDK。如果您还没有配置JDK,就请自行查找资料进行配置吧,某在这里就不讲了,不然又扯远啦。

然后进入这个窗口:

这个对话框得特别留意一下,不要着急单击”Add“按钮添加站点那,否则启动后您就找不到站点部署的位置了。所以这一步直接单击”Finish“。完毕后双击新添加的server,打开如下对话框:

在上面的窗口中,一定要先选择第二项”Use Tomcat installation (takes control of Tomcat installation)“,然后在”Deploy path“中将内容改为”webapps“,然后再按下”Ctrl+S“键保存配置,这样就可以把站点部署到您指定的tomcat的webapps下了。

然后记着给站点添加servlet-api.jar包的引用,在工程上单击右键,选择”Properties“,打开如下对话框:

看到了吧?切换到”Libraries“选项卡后先点击右侧的”Add Library“按钮,再在弹出的窗口中选择”Server Runtime“,单击”Next“--“Finish”和父窗口的”OK“按钮就可以成功引入servlet所需的jar包了。怎么样?CStudentServlet.java中再没有错误提示了吧?

下一步需要将servlet配置为自启动,您只要在web.xml中增加如下内容就可以了:

[html] view plain copy

servlet

servlet-nameCStudentServlet/servlet-name

servlet-classcom.test.servlet.CStudentServlet/servlet-class

load-on-startup1/load-on-startup

/servlet

servlet-mapping

servlet-nameCStudentServlet/servlet-name

url-pattern/servlet/CStudentServlet/url-pattern

/servlet-mapping

记着把站点发布一下,在tomcat上单击邮件,选择“Add and Remove”,将JavaWebService发布到tomcat中。

下一步只要发布和启动一下站点就可以了。如果您还不会,那就在server上单击右键,选择“Publish”,然后再选择“Start”就可以了。

启动成功

如何把java的web工程发布到另外一台服务器上

JDK 1.4.2 + Myeclipse 6.0(实在经不起诱惑,尝尝鲜) + Tomcat 5.0.28 + AXIS 1.4。 AXIS 1.4包可以在 找到。 假设所有的环境你已经搭好,并且AXIS包也已经下好了。OK, Here we go~

解压axis-bin-1_4.zip这个包可以看到webapps目录,双击进入把里面的AXIS文件夹拷到 %TOMCAT_HOME%\webapps目录下,之后拷贝activation.jar、mail.jar、tools.jar到% TOMCAT_HOME%\webapps\axis\WEB-INF\lib目录下。启动tomcat,访问 如果访问成功,恭喜你!基本的配置你已经做完了。

PS:此处的%TOMCAT_HOME%指的是Tomcat的安装目录,至于那另外的三个jar包,J2EE 1.4库里就能找的到。

现在来说一下最关键的Webservice的发布。AXIS提供了两种发布方式,一种是即时发布(Instant Deployment),另外一种是定制发布(Custom Deployment)。即时发布提供了一种非常简单的webservice的发布方式,但是其中限制太多,因此在实际的开发中定制发布才是首选。这里也将会以定制发布为重点来介绍。

1.即时发布 JWS (Java Web Service) Files - Instant Deployment

即时发布提供了一种非常简单发布方式,发布者只要有Java源代码(也就是.java文件),然后把其后缀名改成jws(也就是 java web service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis目录下即完成了所有的发布工作。AXIS的编译引擎会处理接下来的所有事情。下面是一段示例代码:

java 代码

1. public class HelloAXIS {

2.

3. public String Hello(String name){

4. return "AXIS say hello to " + name;

5. }

6. }

把 HelloAXIS.java 文件改成 HelloAXIS.jws 然后拷贝到%TOMCAT_HOME%\webapps\axis目录下,启动Tomcat之后访问 如果能看到 Click to see the WSDL这个超链接就说明已经发布成功了,点击进去就可以看到这个Webservice的WSDL描述文件。server端的发布已经完成了,接下来就是编写Client端测试代码了。

java 代码

1. package com.chnic.test;

2.

3. import java.net.URL;

4.

5. import javax.xml.namespace.QName;

6.

7. import org.apache.axis.client.Call;

8. import org.apache.axis.client.Service;

9.

10. public class Test {

11.

12. public static void main(String[] args) throws Exception{

13. String targetEendPoint = "" ;

14. Service service = new Service();

15. Call call = (Call) service.createCall();

16. call.setOperationName( new QName(targetEendPoint, "Hello" ));

17. call.setTargetEndpointAddress( new URL(targetEendPoint));

18. String result = (String) call.invoke( new Object[]);

19. System.out.println(result);

20. }

21. }

测试代码很简单,如果熟悉java反射机制的朋友不用两分钟就能看明白。运行后客户端控制台出现 AXIS say hello Robert。测试成功。果然很简单吧。不过在这简单背后却是以牺牲灵活性为代价的。假如你现在手里只有.class 或者一个jar包,jws就不再能满足你的需求了,最要命的就是即时发布不支持带包的类,这点AXIS的用户手册上写的也很明白。

Important: JWS web services are intended for simple web services. You cannot use packages in the pages, and as the code is compiled at run time you can not find out about errors until after deployment. Production quality web services should use Java classes with custom deployment.

2.定制发布 Custom Deployment - Introducing WSDD

比起即时发布定制发布更加烦琐也更复杂,但是换来的却是更大的灵活性,因此在实际项目中定制发布还是不二的选择。定制发布需要你自己编写一个WSDD (Web Service Deployment Descriptor)文件,这个东东类似与XML稍后会做出介绍。废话不多说,我们来看代码:

java 代码

1. package com.chnic.webservice;

2.

3. public class HelloWorld {

4.

5. public HelloWorld(){

6.

7. }

8.

9. public String hello(String str){

10. return "Hello " + str;

11. }

12.

13. public int add( int a, int b){

14. return a + b;

15. }

16.

17. }

一个带包的很简单的类,在eclipse下编译后按照包名拷到 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes 目录下。以这个类为例,拷贝完之后这个HelloWorld.class的路径就是 %TOMCAT_HOME%\webapps\axis\WEB-INF\classes\com\chnic\webservice。PS: 如果嫌这样太麻烦,可以另外建一个Java Web工程用myeclipse的发布工具发布到Tomcat之后,整体一次性拷贝到websericve的工程中。

接下来就需要编写发布文件deploy.wsdd。到%TOMCAT_HOME%\webapps\axis\WEB-INF 目录下建立这个文件并在其中添加如下内容:

xml 代码

1. deployment xmlns =

2. xmlns:java = ""

3.

4. service name = "HelloWorld" provider = "java:RPC"

5. parameter name = "className" value = "com.chnic.webservice.HelloWorld" /

6. parameter name = "allowedMethods" value = "*" /

7. / service

8. / deployment

简单的介绍下各个节点的含义,"HelloWorld"当然是这个webservice的名字,后面紧跟的java:RPC指的是服务类型。这里一共有有4种类型,分别是:RPC, Document, Wrapped 和 Message。有兴趣可以看下 org.apache.axis.providers这个包和子包下面的类的API文档。之后的parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。

编写完配置发布文件之后,cmd打开windows的控制台,进入%TOMCAT_HOME%\webapps\axis\WEB-INF目录下键入如下命令

1. java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy.wsdd

之后控制台返回Processing file deploy.wsdd 和 Done processing 这两段话即说明发布成功。(此时会在同级目录生成一个server-config.wsdd文件 )在这里的AdminClient是AXIS提供的一个客户端管理工具。至于java.ext.dirs的含义可以去了解一下classloader和JVM类装载机制方面的知识,在这里就不多解释。 还有一点要注意的是在发布的时候Tomcat服务必须处于启动状态,否则就会抛出一堆无法连接的异常信息。发布成功之后你可以通过访问 来查看你所有的定制发布的服务。

客户端测试代码

1. String targetEendPoint = "" ;

2. Service service = new Service();

3. Call call = (Call) service.createCall();

4. call.setTargetEndpointAddress( new URL(targetEendPoint));

5.

6. call.setOperationName( new QName(targetEendPoint, "hello" ));

7. String result = (String) call.invoke( new Object[]);

8. System.out.println(result);

9.

10. call.setOperationName( new QName(targetEendPoint, "add" ));

11. Integer res = (Integer) call.invoke( new Object[]);

12. System.out.println( "The result is: " + res);

运行测试代码,控制台显示 Hello Robert 和 The result is: 3 这两句话,说明发布成功。仔细观察下发现其实除了那个targetEndpoint 之外,即时发布和定制发布的客户端调用代码基本上都是一样的。定制发布的URL可以在WSDL文件里找到。

如何发布一个java工程

看你要哪种级别的发布,要是只要求在另一台机器运行,很简单,在Eclipse菜单下有个Export...,发布成为war文件,然后把它拷贝到tomcat的webapp目录下就可以了。

但这不包括数据库、还有你程序可能用到的其他目录(比如上传目录啊、特殊资源啊),

一般还需要做个数据库导出脚本,到另一台机器上导入一下,至于其他资源得具体情况具体分析。

要是源码级别的发布,就是说你要在另一台机器上还可能修改,那么对于开发环境比如eclipse,就把工程复制过去好了,直接把目录复制去,再指定一下import目录就好。当然数据库这些脚本跟上面的类似。

java发布方式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java程序发布、java发布方式的信息别忘了在本站进行查找喔。