『壹』 java apiimpl怎么调用 service接口
一、利用jdk web服务实现,这里使用基于SOAP message的Web服务
①.首先建立一个Web services EndPoint:package Hello;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;
@WebService
public class Hello {
@WebMethod
public String hello(String name) {
return "Hello, " + name + "\n";
}
public static void main(String[] args) {
// create and publish an endpoint
Hello hello = new Hello();
Endpoint endpoint = Endpoint.publish("
, hello);
}
}
②.使用apt编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,
会生成jaws目录
③.使用java Hello.Hello运行,然后将浏览器指向
就会出现下列显示
④.使用wsimport生成客户端使用如下:
wsimport -p . -keep
这时,会在当前目录中生成如下文件:
⑤.客户端程序:
1 class HelloClient{
2 public static void main(String args[]) {
3 HelloService service = new HelloService();
4 Hello helloProxy = service.getHelloPort();
5 String hello = helloProxy.hello("你好");
6 System.out.println(hello);
7 }
8 }
以上方法还稍显繁琐,还有更加简单的方法
二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:
1. 一种是从javabean中生成;
2. 一种是从wsdl文件中生成;
3. 还有一种是自己建立webservice
步骤如下:
用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,
代码如下:
1 package com.myeclipse.wsExample;
2 //Generated by MyEclipse
3
4 public interface IHelloWorldService {
5
6 public String example(String message);
7
8 }
接着实现这个借口:
1 package com.myeclipse.wsExample;
2 //Generated by MyEclipse
3
4 public class HelloWorldServiceImpl implements IHelloWorldService {
5
6 public String example(String message) {
7 return message;
8 }
9
10 }修改service.xml文件,加入以下代码:
1 <service>
2 <name>HelloWorldService</name>
3 <serviceClass>
4 com.myeclipse.wsExample.IHelloWorldService
5 </serviceClass>
6 <implementationClass>
7 com.myeclipse.wsExample.HelloWorldServiceImpl
8 </implementationClass>
9 < style>wrapped</style>
10 <use>literal</use>
11 <scope>application</scope>
12</service>
『贰』 java service鏄浠涔堟剰鎬
Java service 鎸囩殑鏄浣跨敤Java璇瑷缂栧啓鐨勬湇鍔°傝繖绉嶆湇鍔¢氬父鏄鍦ㄦ湇鍔″櫒涓婅繍琛岀殑锛屾彁渚涚壒瀹氱殑鍔熻兘銆侸ava service 鐨勫ソ澶勬槸璺ㄥ钩鍙帮紝鍙浠ュ湪涓嶅悓鐨勬搷浣滅郴缁熴佺‖浠朵笂杩愯屻傛湇鍔″櫒绔鐨勫簲鐢ㄧ▼搴忓彲浠ラ氳繃璋冪敤 Java service 鏉ュ疄鐜颁笌瀹㈡埛绔鐨勪氦浜掋
Java service 鐨勫簲鐢ㄥ満鏅鍗佸垎骞挎硾銆傚畠鍙浠ョ敤浜庡紑鍙戜紒涓氱骇搴旂敤绋嬪簭锛屼负鐢ㄦ埛鎻愪緵鍚勭嶅悇鏍风殑鏈嶅姟銆傛瘮濡傦紝浼佷笟鍙浠ヤ娇鐢 Java service 鏉ュ垱寤哄畨鍏ㄧ殑 Web 鏈嶅姟锛岃块棶鏁版嵁搴撱佸彂閫佺數瀛愰偖浠剁瓑鎿嶄綔銆傛ゅ栵紝Java service 杩樺彲浠ユ槸鐙绔嬭繍琛岀殑宸ュ叿锛屽彲浠ラ氳繃缃戠粶鎴栨湰鍦扮殑鏂瑰紡璋冪敤銆
Java service 寮鍙戠浉瀵圭畝鍗曪紝鍙闇鎺屾彙 Java 缂栫▼璇瑷浠ュ強涓浜涚浉鍏冲伐鍏峰嵆鍙銆侸ava 鎻愪緵浜嗕竴绯诲垪鐨 API 鍜屾嗘灦锛屼娇寰楃紪鍐 Java service 鍙樺緱鏇村姞瀹规槗銆傚彟澶栵紝Java service 杩樺彲浠ュ埄鐢ㄥ叾浠栧紑婧愭嗘灦锛屼緥濡 Spring銆丠ibernate 绛夛紝瀹炵幇鏇翠负澶嶆潅鐨勯昏緫鎿嶄綔銆傛讳箣锛孞ava service 鏄寮鍙戞湇鍔$杞浠剁殑閲嶈佹妧鏈涔嬩竴锛屽煎緱寮鍙戣呮繁鍏ュ︿範鍜屽簲鐢ㄣ
『叁』 java中知道model层,怎么根据model层 写service层、impl层、mapper层
没有强制的固定格式。
只是编程习惯。
不过要注意的是,一般在service 层 做事物。
至于怎么写 明白一点:
从controller(action层 不知道你用什么框架)--->service 层(包括接口层和实现层(impl))------>mapper层(Dao 层)。
1:这其实是 业务需要+编程习惯决定的。 因为这样分层,分模块开发,可扩展。逻辑思维清楚,这个你开发中可以体会到。
2:也就是说,你不用service 层 直接把所有东西写在一个方法里他照样可以实现功能。 但是这样不利于扩展,不利于维护。所以他们这样分层开发最好。框架这样设计是有道理的。
『肆』 java普通类怎么调用service曾的累
如果你用spring的话,你就可以在类中初始化spring配置文件applicationContext.xml:
ApplicationContext applicationContext = new (applicationContext.xml");
然后拿到专service类:
logonService = (LogonService) this.applicationContext.getBean("logonService");
调用类中的属方法:
logonService.userLogin(userName);
即可
『伍』 java Webservice都有哪几种方式啊,哪种方式比较好啊
webservice的应用已经越来越广泛了,下面介绍几种在Java体系中开发webservice的方式,相当于做个记录。
1.Axis2
Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。这里主要介绍Axis+eclipse开发webservice,当然不用eclipse也可以开发和发布webservice,只是用eclipse会比较方便。
(1)下载eclipse的Java EE版本
(2)下载axis2
(3)下载eclipse的axis2插件
Axis2_Codegen_Wizard
Axis2_Service_Archiver
推荐使用1.3的版本
(4)eclipse安装axis2插件
1)在任意目录下新建一个Axis2文件夹,在该文件夹下新建eclipse目录,在eclipse目录中新建plugins目录和features目录,例如:D:\programSoftware\eclipse-SVN\Axis2\eclipse;
2)把下载的axis2插件解压,并把解压的文件放到新建的eclipse的plugins目录下;
3)在%eclipse_home%的目录下新建links目录,并在links目录下新建axis2.link文件,内容为:path=D:\programSoftware\eclipse-SVN\Axis2;
4)重启eclipse,点击·file-new-other,如果看到Axis2 Wizards,则表明插件安装成功。
(5)安装axis2
(6)使用eclipse新建web工程,创建一个普通java类,至少包含一个方法。
(7)发布webservice
1)点击eclipse的File-New-other,打开Axis2 Wizards,选择Axis2 Service Archiver,然后Next;
2)选择Class File Location,也就是类文件存放路径,注意:只选到classes目录,不要包括包文件夹,然后Next;
3)选择Skip WSDL,然后Next
4)一路Next到Select the Service XML file to be included in the Service archive,勾选Generate theservice xml automatically;
5)Service Name-填写你的service名称,Class Name-填写类名称,要包括包名,然后点击load,然后点击Finish,这时webservice就发布成功了;
6)然后到%TOMCAT_HOME%/webapps/axis2/WEB-INF/services 看看是否多了一个.aar的文件;
注意:以上的方式是发布到axis2.war包中,你也可以把生成.aar文件到你的实际应用中,同时,你也可以使用eclipse的create webservice功能发布你的webservice,选择axis2生成你的webservice,这样webservice就会部署到你的应用中了。
2.Apche CXF
CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。举一个CXF开发webservice的例子吧。
1)在eclipse中新建一个web工程,导入依赖包,如图:
2)编写一个接口,如:
注意:CXF开发的webservice,接口中的方法的参数一定要以这种方式,否则客户端调用的时候CXF服务端会接收不到参数的值,name:参数名称,可不写(建议写上),targetNamespace:命名空间,一定要填写上,默认是包名反过来的顺序,mode:参数类型,IN表示输入。
3)编写一个实现类,实现接口的方法;
4)和spring的集成,编写一个bean文件,如:cxf-beans.xml,内容如下:
Cxf-beans.xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="vote" implementor="com.zcl.cxf.service.VoteImpl" address="/Vote" />
</beans>
这个文件比较容易理解,就不解释了。
5)配置CXFServlet
在web.xml文件中配置CXFServlet,加载cxf-beans.xml文件,内容如下:
Web.xml代码
id="WebApp_ID" version="2.5">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/cxf-beans.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
把工程部署到中间件,如tomcat,就可以访问该webservice了。
3.JDK开发webservice
1)编写一个Java类,如下:
Jdkwebservice.java代码
package demo;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class JdkWebService {
return "Just do it," + value + "!";
}
public static void main(String[] args) {
}
}
2)运行该java类,在浏览器上就可以访问该webservice了。
注意:开发web工程的时候,这种方法不太友好。我们可以编写一个servlet类,在servlet类的初始化方法中发布webservice,这样我们的中间件服务器启动的时候就会帮我们自动webservice了。
4) xfire
开发WebService的框架不少,每个框架都有各自的有点,最近我用xfire练习开发WebService,下面是开发WebService的小例子,希望对入门的人有些小帮助
1.新建一个java web project命名为TestWebService,将xfire相关的jar包添加到lib目录中,写接口类和实现类
Java代码
package com.lamp.service;
public interface MessageService {
public String getName(String name);
}
[java] view plainprint?
package com.lamp.service;
public interface MessageService {
public String getName(String name);
}
实现类
Java代码
package com.lamp.service.impl;
import com.lamp.service.MessageService;
public class MessageServiceImpl implements MessageService {
public String getName(String name) {
return "hellow " + name + ", welcome to WebService world";
}
}
[java] view plainprint?
package com.lamp.service.impl;
import com.lamp.service.MessageService;
public class MessageServiceImpl implements MessageService {
public String getName(String name) {
return "hellow " + name + ", welcome to WebService world";
}
}
在src目录下新建文件夹META-INF,然后再在其下新建文件夹xfire,在xfire目录下新建配置文件services.xml
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<service>
<name>MessageService</name>
<serviceClass>com.lamp.service.MessageService</serviceClass>
<implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass>
</service>
</beans>
[xml] view plainprint?
<?xml version="1.0" encoding="UTF-8"?>
<service>
<name>MessageService</name>
<serviceClass>com.lamp.service.MessageService</serviceClass>
<implementationClass>com.lamp.service.impl.MessageServiceImpl</implementationClass>
</service>
</beans>
最后在web.xml中配置xfire的servlet
Xml代码
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
[xml] view plainprint?
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
这样服务器端开发完毕,现在开始客户端的开发
新建一个java project也将xfire相关的jar引入,我用ant在客户端生成代理对象,在项目路径下新建build.xml,代码为
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebService" basedir="." default="gen-webservice">
<property file="build.properties">
</property>
<path id="project-classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="gen-webservice">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" />
<wsgen outputDirectory="${src.dir}"
wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/>
</target>
</project>
[xml] view plainprint?
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebService" basedir="." default="gen-webservice">
<property file="build.properties">
</property>
<path id="project-classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="gen-webservice">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="project-classpath" />
<wsgen outputDirectory="${src.dir}"
wsdl="${wsdl.dir}" package="com.lamp.ws.client" overwrite="true"/>
</target>
</project>
『陆』 java语言使用post方式调用webService方式
WebService可以有Get、Post、Soap、Document四种方式调用,以下Java通过方式调用WebService代码:
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStream;
importjava.io.OutputStreamWriter;
importjava.net.URL;
importjava.net.URLConnection;
importjava.net.URLEncoder;
importorg.apache.cxf.endpoint.Client;
importorg.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
/**
*功能描述:WebService调用
*
*/
publicclassClientTest{
/**
*功能描述:HTTP-POST
*
*/
publicStringpost(){
OutputStreamWriterout=null;
StringBuildersTotalString=newStringBuilder();
try{
URLurlTemp=newURL(
"http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity");
URLConnectionconnection=urlTemp.openConnection();
connection.setDoOutput(true);
out=newOutputStreamWriter(connection.getOutputStream(),"UTF-8");
StringBuffersb=newStringBuffer();
sb.append("byProvinceName=福建");
out.write(sb.toString());
out.flush();
StringsCurrentLine;
sCurrentLine="";
InputStreaml_urlStream;
l_urlStream=connection.getInputStream();//请求
BufferedReaderl_reader=newBufferedReader(newInputStreamReader(
l_urlStream));
while((sCurrentLine=l_reader.readLine())!=null){
sTotalString.append(sCurrentLine);
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(null!=out){
try{
out.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnsTotalString.toString();
}
}
『柒』 请问java项目 里的DAO,model,service, IMPL 是什么意思,以及有什么关系
在一般工程中 基本上都会出现上述的字眼
首先 DAO 提供了应用程序与数据库之间的操作规范 和操作 用于通常数据库的增删查改 一般如果使用框架 都是由框架自动生成,提高访问效率和便于快速开发。hibernate的DAO中 提供了关于事物 数据读取 修改 删除 添加 这些逻辑 还依赖于下面提到的Model
Model 为了便于理解业务和代码可读 美观 通常将数据库表 作为对象封装,对象封装中提供属性 一般操作DAO类的时候 传入的是Model 通过 hibernate的映射文件 映射到数据库字段也就是通常说的 通过实体类操作数据库
IMPL 以IMPL 结尾的类 一般是实现了某个或多个接口的类 这些类的接口 是定义了一些规范的类通常是数据访问等等 在service 中 会通过spring的注入 注入这些接口来实现逻辑
service 一般在service的实现类 会出现在action中。这些service 提供了包含逻辑的数据访问
举个例子 在 项目中需要将查询出来的所有数据的某个值加1 那么 在service 中 就会做一次循环 从查询出来的Model 集合中 将值取出来 +1
它们的协作关系如下
web页面--->Action---->service---->interface---->IMPL---->DAO---->DATABASE
『捌』 如何使用java做webservice
基于AXIS的web service: 1 比如要建一个Server.java类的web service public class Server { public String printInfo(String name){ return "Hello,"+name; } } 2 把Server.java改为Server.Jws放到 …\Tomcat 5.5\webapps\axis中,重启服务器 3 访问 4 在cmd中输入 cd D:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\axis\WEB-INF 输入命令:Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java 5 找到…\Tomcat 5.5\webapps\axis\WEB-INF下生成的localhost文件夹复制到工程中 6 建一个Client端的类进行测试: public class Client { public static void main(String arg[]) throws ServiceException, RemoteException{ ServerService ss=new ServerServiceLocator(); Server s=ss.getServer(); System.out.println("............"+s.printInfo("shiyou")); } } 蓝屏
『玖』 Java涓璼ervice鍜宻erver鏈変粈涔堝尯鍒锛
涓鑸鏉ヨ, 鎴戜滑浼氬逛竴涓瀹屾暣鐨凧ava鏈嶅姟鍋氫竴浜涙灦鏋勫垏鍒, Server涓昏佹寚鐨勬槸鏈嶅姟鏈韬, 涓鑸鍙鑳芥槸Springboot鏋舵瀯鐨勫惎鍔ㄧ被, 鑰宑ontroller, service, 绛夋槸浣滀负浠g爜鐨勭粨鏋勬媶鍒, 涓鑸鏉ヨ磗ervice鏄鐢ㄦ潵鎻忚堪澶勭悊鏍稿績涓氬姟閫昏緫鐨勭浉鍏充唬鐮佺被, controller鏄鐢ㄦ潵浣滀负瀵瑰栨毚闇茬殑鎺ュ彛绫.
『拾』 java中 类中的类怎么调用service
如果方法使static修饰的。直接:返回值(如果需要)=对象.方法(参数); 如果方法没有使static修饰的。直接:返回值(如果需要)=new 类().方法(参数);