带有Spring和Maven教程的JAX–WS

Spring框架通过JAX-WS提供对Web服务的远程支持,实际上,如Spring 参考文档中所述 ,有三种将Spring POJO服务公开为JAX-WS Web服务的方式:

  1. 公开基于Servlet的Web服务(适用于Java EE 5环境)
  2. 导出独立的Web服务(适用于使用Sun的JDK 1.6内置JAX–WS提供程序的情况)
  3. 使用JAX-WS RI的Spring支持导出Web服务(类似于独立方法,但是这次是在Servlet环境中。适用于非Java EE环境,例如Tomcat ,将JAX-WS RI嵌入为Web应用程序的一部分)

选择上述三种方法之一主要取决于您的执行环境。 话虽如此,我们将向您展示如何使用上述所有方法来设置和公开一个简单的Spring服务。

我们首选的开发环境是Eclipse ,因此,必须先安装具有Maven支持的Eclipse 。 用于Eclipse的Maven插件的安装不在本教程的讨论范围内,因此将不予讨论。 但是,您将需要以下组件:

  1. 从这里 蚀
  2. 从这里开始 , Eclipse的 Maven插件

在本教程中,我们将使用Eclipse Galileo,“ m2eclipse” Maven Integration for Eclipse插件版本0.10.0和Spring版本3.0.1。

让我们开始,

  1. 创建一个新的Maven项目,转到File? 项目? Maven? Maven项目
  2. 在向导的“选择项目名称和位置”页面中,确保未选中 “创建简单项目(跳过原型选择)”选项,单击“下一步”以继续使用默认值
  3. 在向导的“选择原型”页面中,在“目录”下拉列表中选择“ Nexus Indexer”,并在刷新原型选择区域后,从“ org.codehaus.mojo”中选择“ webapp-javaee6”原型。原型”。 您可以使用“过滤器”文本框来缩小搜索结果范围。 点击“下一步”继续
  4. 在向导的“输入工件ID”页面中,您可以定义项目的名称和主程序包。 我们将“ Group Id”变量设置为“ com.javacodegeeks”,并将“ Artifact Id”变量设置为“ jaxwsspring”。 前面提到的选择组成了主项目包“ com.javacodegeeks.jaxwsspring”和项目名“ jaxwsspring”。 点击“完成”退出向导并创建您的项目

让我们回顾一下有关Maven Web项目结构的一些事情

  1. / src / main / java文件夹包含应用程序动态内容的源文件
  2. / src / test / java文件夹包含用于单元测试的所有源文件
  3. / src / main / webapp文件夹包含用于创建有效的Web应用程序的基本文件,例如“ web.xml”
  4. / target文件夹包含已编译和打包的可交付成果
  5. “ pom.xml”是项目对象模型(POM)文件。 包含所有项目相关配置的单个文件。

这里要注意的一件事是,我们选择使用兼容Java EE6的 Maven项目原型。 我们的选择是有目的的,以便易于演示上述所有可用方法。 不过,即使您使用其他环境(例如独立的Servlet环境(例如Apache Tomcat)或Java EE 5兼容的应用程序服务器(例如JBoss Application Server)),也可以按照本教程将Spring服务作为JAX-WS服务公开。

为了在运行时正确使用Spring ,我们必须向Web应用程序提供所有必需的库。 打开“ pom.xml”的图形编辑器并执行以下更改:

  1. 在POM编辑器的“概述”页面上的“属性”部分中找到并执行以下更改:
  • 创建一个名称为org.springframework.version且值为3.0.1.RELEASE的新属性
  • 导航到POM编辑器的“ Dependencies”页面,并创建以下依赖关系(您应在该页面的“ Dependency Details”部分的“ GroupId”,“ Artifact Id”和“ Version”字段中进行填充):
    • 组ID: org.springframework工件ID: spring-web版本: $ {org.springframework.version}

    如您所见, Maven以声明方式管理库依赖关系。 创建本地存储库(默认情况下,位于{user_home} /。m2文件夹下),所有必需的库都从公共存储库下载并放置在该库中。 此外,库内的依赖关系会自动解决和处理。

    下一步是为Web应用程序提供挂钩,以便在启动时加载Spring上下文。

    在/ src / main / webapp文件夹下创建一个“ WEB-INF /web.xml”文件,并添加以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>jaxwsspring</display-name><session-config><session-timeout>30</session-timeout></session-config><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
    </web-app>

    现在让我们创建将驱动Spring容器的applicationContext.xml文件。 在/ src / main / webapp / WEB-INF目录下创建文件。 下面是一个示例“ applicationContext.xml”:

    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"><context:component-scan base-package="com.javacodegeeks.jaxwsspring" /></beans>

    这里要注意的事情:

    1. 将context:component-scan元素的base-package属性更改为项目的基本包,以便扫描Spring组件

    现在让我们创建一个“问候” Spring服务。 在主程序包下创建一个名为“服务”的子程序包,并将“ GreetingService”类放在此处。 下面是一个示例“问候”服务:

    package com.javacodegeeks.jaxwsspring.services;import org.springframework.stereotype.Service;@Service("greetingService")
    public class GreetingService {public String sayHello() {return "Hello from Greeting Service";}}

    JAX–WS需要使用专用的端点类。 如果需要导出现有服务,则包装器类是最简单的JAX–WS兼容方法。 现在创建一个“问候”端点类。 在主程序包下创建一个名为“ endpoints”的子程序包,并将“ GreetingServiceEndpoint”类放在此处。 下面是一个示例“问候”端点类:

    package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod;
    import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired;import com.javacodegeeks.jaxwsspring.services.GreetingService;@WebService(serviceName="GreetingService")
    public class GreetingServiceEndpoint {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}

    如您所见,这是一个与JAX–WS兼容的“ greeting”服务实现,仅委托给“ GreetingService”实现。 这是将在JAX-WS引擎中注册的类。 对于Java EE 5服务器(基于Servlet的Web服务方法),Web服务引擎管理端点类实例的生命周期。 在其他两种情况下,端点实例是作为Spring Bean本身定义和管理的,因此它们的生命周期将取决于Spring应用程序上下文。

    Spring为JAX-WS Servlet端点实现提供了一个方便的基类-“ SpringBeanAutowiringSupport”。 要将我们的“ GreetingService”公开为基于Servlet的Web服务,我们必须执行以下操作:

    1. 修改我们的“ GreetingServiceEndpoint”类以扩展Spring的“ SpringBeanAutowiringSupport”类。 这样,将兑现@Autowired批注,Spring的IoC容器将能够将实际的“ greeting”服务实例注入到我们的终结点类中,以正确地委派调用。
    2. 我们的“ GreetingServiceEndpoint”需要在与Spring上下文相同的Web应用程序中运行,以允许访问Spring的设施。 在Java EE 5环境中,默认情况下就是这种情况,它使用JAX-WS Servlet端点部署的标准协定。
    3. 端点是在服务器端JAX-WS实现中注册的类。 对于Java EE 5服务器,可以简单地将其定义为“ web.xml”中的Servlet ,服务器检测到这是一个JAX–WS端点,并做出相应的反应。 Servlet名称通常需要与指定的Web服务服务名称匹配。

    请牢记以上几点,如下所示更改端点类:

    package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod;
    import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.context.support.SpringBeanAutowiringSupport;import com.javacodegeeks.jaxwsspring.services.GreetingService;@WebService(serviceName="GreetingService")
    public class GreetingServiceEndpoint extends SpringBeanAutowiringSupport {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}

    最后,将以下Servlet声明添加到“ web.xml”中:

    <servlet>  <servlet-name>GreetingService</servlet-name>  <servlet-class>  com.javacodegeeks.jaxwsspring.endpoints.GreetingServiceEndpoint</servlet-class>  
    </servlet>  <servlet-mapping>  <servlet-name>GreetingService</servlet-name>  <url-pattern>/GreetingService</url-pattern>  
    </servlet-mapping>

    要构建应用程序,请右键单击您的项目? 运行为? Maven包

    要部署Web应用程序,只需将“ .war”文件从“ target”目录复制到Java EE 5服务器Web应用程序部署文件夹。 在本教程中,我们将Web应用程序部署到JBoss 5.1.0 Application Server。

    要启动该应用程序,请将浏览器指向以下地址

    http:// localhost:8080 / jaxwsspring /

    如果一切顺利,您应该会看到显示以下内容的主网页:

    “你好,世界!”

    我们的网络服务地址应位于:

    http:// localhost:8080 / jaxwsspring / GreetingService

    如果将浏览器指向以下位置,则可以查看我们的Web服务WSDL:

    http:// localhost:8080 / jaxwsspring / GreetingService?wsdl

    结果应如下所示:

    <definitions name="GreetingService" targetNamespace="http://endpoints.jaxwsspring.javacodegeeks.com/"><types><xs:schema targetNamespace="http://endpoints.jaxwsspring.javacodegeeks.com/" version="1.0"><xs:element name="sayHello" type="tns:sayHello"/><xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/><xs:complexType name="sayHello"><xs:sequence/></xs:complexType><xs:complexType name="sayHelloResponse"><xs:sequence><xs:element minOccurs="0" name="return" type="xs:string"/></xs:sequence></xs:complexType></xs:schema></types><message name="GreetingServiceEndpoint_sayHello"><part element="tns:sayHello" name="sayHello"/></message><message name="GreetingServiceEndpoint_sayHelloResponse"><part element="tns:sayHelloResponse" name="sayHelloResponse"/></message><portType name="GreetingServiceEndpoint"><operation name="sayHello" parameterOrder="sayHello"><input message="tns:GreetingServiceEndpoint_sayHello"/><output message="tns:GreetingServiceEndpoint_sayHelloResponse"/></operation></portType><binding name="GreetingServiceEndpointBinding" type="tns:GreetingServiceEndpoint"><soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="sayHello"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="GreetingService"><port binding="tns:GreetingServiceEndpointBinding" name="GreetingServiceEndpointPort"><soap:address location="http://127.0.0.1:8080/jaxwsspring/GreetingService"/></port></service>
    </definitions>

    现在我们有了Web服务定义,我们可以使用我们最喜欢的SOAP客户端(生成或实现一个)来调用“问候” Web服务的操作。 访问Web服务不在本教程的讨论范围内,因此我们将不再对其进行讨论。 不过,我们将提供一个示例请求–使用我们首选的Web服务测试工具soapUI调用“ GreetingService”的“ sayHello”操作时的响应对话框

    soapUI工具发布的SOAP请求:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoints.jaxwsspring.javacodegeeks.com/"><soapenv:Header/><soapenv:Body><end:sayHello/></soapenv:Body>
    </soapenv:Envelope>

    从“ greeting” Web服务接收到的相关SOAP响应:

    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns2:sayHelloResponse xmlns:ns2="http://endpoints.jaxwsspring.javacodegeeks.com/"><return>Hello from Greeting Service</return></ns2:sayHelloResponse></env:Body>
    </env:Envelope>

    如上所述,Sun的JDK 1.6附带的内置JAX-WS提供程序也支持使用JDK 1.6附带的内置HTTP服务器公开Web服务。 Spring的“ SimpleJaxWsServiceExporter”在Spring应用程序上下文中检测所有带@WebService注释的bean,并通过默认的JAX–WS服务器(JDK 1.6 HTTP服务器)将其导出。

    在这种情况下,终结点实例被定义和管理为Spring bean本身。 它们将在JAX-WS引擎中注册,但是它们的生命周期将取决于Spring应用程序上下文。 这意味着可以将Spring功能(例如显式依赖项注入)应用于终结点实例。 当然,通过@Autowired注解驱动的注入也将起作用。

    要利用这种方法,我们要做的就是通过使用@Service注释对端点类声明为Spring bean。 另外,我们必须在应用程序上下文文件中添加“ SimpleJaxWsServiceExporter” bean声明,如下所示:

    package com.javacodegeeks.jaxwsspring.endpoints;import javax.jws.WebMethod;
    import javax.jws.WebService;import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;import com.javacodegeeks.jaxwsspring.services.GreetingService;@Service("greetingServiceEndpoint")
    @WebService(serviceName="GreetingService")
    public class GreetingServiceEndpoint {@Autowiredprivate GreetingService greetingService;@WebMethodpublic String sayHello() {return greetingService.sayHello();}}

    这里要注意的事情:

    1. GreetingServiceEndpoint可以从Spring的“ SpringBeanAutowiringSupport”派生而来,但不必这样做,因为该端点是完全由Spring管理的bean
    <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"><context:component-scan base-package="com.javacodegeeks.jaxwsspring" /><bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"><property name="baseAddress" value="http://localhost:9999/" /></bean></beans>

    这里要注意的事情:

    1. 将context:component-scan元素的base-package属性更改为项目的基本包,以便扫描Spring组件
    2. 您可以更改“ SimpleJaxWsServiceExporter”的“ baseAddress”属性以适合您的需求。 “ baseAddress”是将导出所有检测到的Web服务的地址。 默认的“ baseAddress”是“ http:// localhost:8080 /”

    要构建应用程序,请右键单击您的项目? 运行为? Maven包

    为了测试特定的方法,我们将将Web应用程序部署到Apache Tomcat 6服务器。 不要忘记,我们将利用Sun的JDK 1.6构建于JAX-WS的提供程序中。 即使我们在Servlet容器中进行操作。 在这种特定情况下,我们仅将Servlet容器用于启动Spring应用程序。 另外,您可以实现Main类并以编程方式启动Spring应用程序。

    要启动该应用程序,请将浏览器指向以下地址

    http:// localhost:8080 / jaxwsspring /

    如果一切顺利,您应该会看到显示以下内容的主网页:

    “你好,世界!”

    我们的网络服务地址应位于:

    http:// localhost:9999 / GreetingService

    如果将浏览器指向以下位置,则可以查看我们的Web服务WSDL:

    http:// localhost:9999 / GreetingService?wsdl

    我们可以再次使用Web服务定义来生成和/或实现SOAP客户端,以调用“问候” Web服务的操作。

    作为GlassFish项目的一部分开发的Sun的JAX–WS RI,将Spring支持作为其JAX–WS Commons项目的一部分。 这允许将JAX-WS端点定义为Spring管理的Bean,类似于上一节中讨论的独立模式-但这次是在Servlet环境中。 请注意,这在Java EE 5环境中不可移植。 它主要用于Tomcat等非EE环境,并将JAX–WS RI嵌入为Web应用程序的一部分。

    与导出基于Servlet的端点的标准样式的不同之处在于,这里将由Spring管理端点实例本身的生命周期,并且在“ web.xml”中仅定义一个JAX-WS Servlet 。 使用标准的Java EE 5样式(如上所示),每个服务端点都有一个Servlet定义,每个端点通常都委派给Spring Bean。

    最后一种方法是特定于Spring 2.0的 ,因此在更改任何代码之前,我们应该稍微更改项目配置。 特别是,我们必须删除Spring 3库的依赖关系,并向jaxws-spring库添加一个新的依赖项。 打开“ pom.xml”的图形编辑器并执行以下更改:

    1. 在POM编辑器的“概述”页面上的“属性”部分中找到,并删除名称为org.springframework.version的属性(如果存在的话)–如果您从一开始就遵循此教程
    2. 导航到POM编辑器的“ Dependencies”页面,并创建以下依赖关系(您应在该页面的“ Dependency Details”部分的“ GroupId”,“ Artifact Id”和“ Version”字段中进行填充):
    • 组ID: org.jvnet.jax-ws-commons.spring工件ID: jaxws-spring版本: 1.8
    1. 自撰写本文以来, jaxws-spring库的最新版本( 1.8 )的“ pom”文件中存在依赖项声明缺陷。 特别是对于jaxb-impl2.1.2版本,不必要的依赖声明会导致代码中断。 要解决此问题,必须为jaxb-impl库的特定版本配置排除项。 为此,选择新创建的依赖项,找到编辑器页面的“排除项”部分,然后如下所示创建排除项:
      • 组ID: com.sun.xml.bind工件ID: jaxb-impl
      1. 另外,为jaxb-impl库的2.1.6版本创建另一个显式依赖项,如下所示:
        • 组ID: com.sun.xml.bind工件ID: jaxb-impl版本: 2.1.6
        1. 最后但并非最不重要的一点是,我们必须配置两个新的存储库,以便Maven能够下载项目依赖项。 导航到POM编辑器的“存储库”页面,并创建以下存储库:
          • ID: download.java.net存储库1 URL: http//download.java.net/maven/1/布局: 旧版
          • ID: download.java.net存储库2 URL: http//download.java.net/maven/2/

          要使用这种方法,我们必须遵循以下步骤:

          找到“ web.xml”文件,并通过定义主要的JAX-WS Servlet以及我们要作为Web服务公开的服务所需的Servlet映射,来对其进行更改; 每个服务一个Servlet映射。 因此,对于我们的特定测试用例,我们应该添加以下声明:

          <servlet><servlet-name>jaxws-servlet</servlet-name><servlet-class>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</servlet-class></servlet><servlet-mapping><servlet-name>jaxws-servlet</servlet-name><url-pattern>/GreetingService</url-pattern></servlet-mapping>

          更改“ applicationContext.xml”文件,如下所示:

          <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:ws="http://jax-ws.dev.java.net/spring/core"xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://jax-ws.dev.java.net/spring/corehttp://jax-ws.dev.java.net/spring/core.xsdhttp://jax-ws.dev.java.net/spring/servlethttp://jax-ws.dev.java.net/spring/servlet.xsd"><wss:binding url="/GreetingService"><wss:service><ws:service bean="#greetingService" /></wss:service></wss:binding><bean id="greetingService" class="com.javacodegeeks.jaxwsspring.services.GreetingService" /></beans>

          这里要注意的事情:

          1. 这种方法是特定于Spring 2.0的 ,因此已创建了与Spring 2.0兼容的“ applicationContext.xml”文件。 请注意,由于@Service注释在Spring 2.0中不可用,因此我们直接在“ applicationContext.xml”文件中声明了“问候” Spring服务bean。
          2. wss:binding定义定义将哪些服务公开到URL空间的哪一部分。 在上面的代码中,它在/ GreetingService URL上部署了“ GreetingService”
          3. ws:service定义实现一个Web服务实例。 最简单的形式应该配置bean属性,以便将所有调用委托给指定的Spring bean。 如您所见,使用这种方法我们可以省略创建“端点”类来代理我们的Spring服务。

          最后,我们实现“ GreetingService”,如下所示:

          package com.javacodegeeks.jaxwsspring.services;import javax.jws.WebMethod;
          import javax.jws.WebService;
          import javax.jws.soap.SOAPBinding;
          import javax.jws.soap.SOAPBinding.Style;
          import javax.jws.soap.SOAPBinding.Use;@WebService(serviceName="GreetingService")
          @SOAPBinding(style = Style.RPC, use = Use.LITERAL)
          public class GreetingService {@WebMethodpublic String sayHello() {return "Hello from Greeting Service";}}

          这里要注意的事情:

          1. 如果使用的是“ Style.DOCUMENT ”,则应运行“ wsgen ”工具。 “ Style.RPC ”仅用于演示目的。
          2. @Service批注在Spring 2.0中不可用,因此我们直接在“ applicationContext.xml”文件中声明

          要构建应用程序,请右键单击您的项目? 运行为? Maven包

          为了测试特定的方法,我们将将Web应用程序部署到Apache Tomcat 6服务器。

          要启动该应用程序,请将浏览器指向以下地址

          http:// localhost:8080 / jaxwsspring /

          如果一切顺利,您应该会看到显示以下内容的主网页:

          “你好,世界!”

          我们的网络服务地址应位于:

          http:// localhost:8080 / jaxwsspring / GreetingService

          如果将浏览器指向以下位置,则可以查看我们的Web服务WSDL:

          http:// localhost:8080 / jaxwsspring / GreetingService?wsdl

          我们可以再次使用Web服务定义来生成和/或实现SOAP客户端,以调用“问候” Web服务的操作。

          快乐编码

          贾斯汀

          相关文章 :
          • GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
          • GWT Spring和Hibernate进入数据网格世界
          • Spring 3 HornetQ 2.1集成教程
          • Spring3 RESTful Web服务
          • GWT 2 Spring 3 JPA 2 Hibernate 3.5教程– Eclipse和Maven 2展示

          翻译自: https://www.javacodegeeks.com/2010/11/jaxws-with-spring-and-maven-tutorial.html

        本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374846.shtml

        如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

        相关文章

        7-2 然后是几点 (15 分)

        7-2 然后是几点 (15 分) 有时候人们用四位数字表示一个时间&#xff0c;比如 1106 表示 11 点零 6 分。现在&#xff0c;你的程序要根据起始时间和流逝的时间计算出终止时间。 读入两个数字&#xff0c;第一个数字以这样的四位数字表示当前时间&#xff0c;第二个数字表示分钟…

        CXF学习(2) helloworld

        0.新建一个项目取名wsserver. pom.xml 文件如下 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd…

        Hive 接口介绍(Web UI/JDBC)

        Hive 接口介绍&#xff08;Web UI/JDBC&#xff09; 实验简介 本次实验学习 Hive 的两种接口&#xff1a;Web UI 以及 JDBC。 一、实验环境说明 1. 环境登录 无需密码自动登录&#xff0c;系统用户名shiyanlou&#xff0c;密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubu…

        Java最佳实践– Char到Byte和Byte到Char的转换

        在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将讨论String性能调优。 特别是&#xff0c;我们将重点介绍使用默认编码时如何有效地处理字符到字节和字节到字符的转换。 本文总结了两种提议的自定义方法与两种经典方法&#xff0…

        IOS-C文件的创建于初始化函数.void init() write_file()

        //文件初始化 void init(){ FILE * fpNULL; fpfopen("telbook.data", "rb"); int count0; if (fpNULL) //没有这个文件就把这个文件创建出来 { fpfopen("tellbook.data", "wb"); fwrite(&count, sizeof(count), 1, fp); fclose(…

        7-3 逆序的三位数 (10 分)

        7-3 逆序的三位数 (10 分) 程序每次读入一个正3位数&#xff0c;然后输出按位逆序的数字。注意&#xff1a;当输入的数字含有结尾的0时&#xff0c;输出不应带有前导的0。比如输入700&#xff0c;输出应该是7。 输入格式&#xff1a; 每个测试是一个3位的正整数。 输出格式&a…

        抛弃优启Grub4dos和PE大多数时间可以这样用

        抛弃优启Grub4dos和PE大多数时间可以这样用 在能够进入Windows的情况下&#xff0c;Grub4dos和PE大多数时间可以这样用 http://yunpan.cn/cyuuUtUQMfmGN 提取码 c2acGrub4dos的出现颠覆了传统的EZBOOT光盘启动模式&#xff0c;很多人用grub4dos来实现优盘启动&#xff0c;同时g…

        Java最佳实践–队列之战和链接的ConcurrentHashMap

        在使用Java编程语言时&#xff0c;我们将继续讨论与建议的实践有关的系列文章&#xff0c;我们将在四个具有相关语义的流行Queue实现类之间进行性能比较。 为了使事情变得更现实&#xff0c;我们将在多线程环境下进行测试&#xff0c;以讨论和演示如何将ArrayBlockingQueue &am…

        HDU 5652 India and China Origins(二分 + BFS)

        本文链接:http://www.cnblogs.com/Ash-ly/p/5398867.html 题意&#xff1a; 中国和印度之间有一片地方&#xff0c;把这片地方抽象化&#xff0c;于是就可以看成一个N * M矩阵&#xff0c;其中黑色的代表高山不能走过去&#xff0c;白色的代表平原&#xff0c;可以通行,人每次可…

        C语言%.2f四舍五入

        #include <stdio.h> int main() {double d 1.199;printf("%.2f", d);return 0; }输出1.20 如果不想让其四舍五入可以这样&#xff1a; #include <stdio.h> #include <math.h> int main() {double d 1.199;printf("%.2f", floor(d * 1…

        关于使用racthet的push.js

        racthet的push是用来跳转另外一个页面的效果的。但是必须在服务器的环境下支持。如果想要让本地html访问支持的话需要添加 转载于:https://www.cnblogs.com/djawh/p/4623925.html

        休眠自动提交命令强制MySQL在过多的磁盘I / O中运行

        亲爱的大家&#xff0c; 我敢肯定&#xff0c;你们中的许多人都在使用Hibernate和MySQL&#xff0c;我自己在这里和那里都使用它。 通常&#xff0c;编程模型是不错的&#xff0c;但是普通的JDBC可以快很多已经不是什么秘密了。 在这篇文章中&#xff0c;我想引起您的注意Hibe…

        “应用程序无法正常启动(oxc000007b)”解决方案

        解决方案1 通过“DirectX修复工具 V3.3 标准版”软件修复。 备注&#xff1a;经过测试&#xff0c;并未解决本人的问题&#xff0c;但是这个方法可能对游戏中缺失相关.dll&#xff08;动态链接库&#xff09;有帮助。 解决方案2&#xff1a; 该问题的出现不适偶然&#xff0c;主…

        Linux: dev: cmake: CHECK_LIBRARY_EXISTS

        文章目录 简介例子源代码最终调用到的两个命令如果结果是这里为什么不直接使用rpm查看包呢&#xff1f;需要注意的问题 简介 https://cmake.org/cmake/help/latest/module/CheckLibraryExists.html 这个方法是在Modules/CheckLibraryExists.cmake文件里定义的一个宏。 最终使用…

        7-15 计算圆周率 (15 分)

        根据下面关系式&#xff0c;求圆周率的值&#xff0c;直到最后一项的值小于给定阈值。 输入格式&#xff1a; 输入在一行中给出小于1的阈值。 输出格式&#xff1a; 在一行中输出满足阈值条件的近似圆周率&#xff0c;输出到小数点后6位。 输入样例&#xff1a; 0.01结尾无…

        Struts2的全局结果视图的配置

        1.在struts.xml中的package标签内添加<global-results/>标签&#xff0c;将全局结果加进该标签内&#xff0c;只适用于当前包下。 <package name"customer" namespace"/customer" extends"struts-default" > <global-results>…

        长大了Java! 提出Java桌面版

        不&#xff0c;这不是另一个“ Java已死”的咆哮。 Java非常活跃。 它是可用的最佳开发和运行时平台之一。 迄今为止&#xff0c;最稳定的平台。 那可能只是它最大的祸根。 荒谬&#xff01; 稳定性如何&#xff1f; 你可能会问。 好吧&#xff0c;由于它&#xff0c;您可以看到…

        [算法练习]Excel Sheet Column Title

        题目&#xff1a; Given a positive integer, return its corresponding column title as appear in an Excel sheet. For example: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB 代码&#xff1a; class Solution { public: string convertToTitle(…

        7-16 求符合给定条件的整数集 (15 分)

        给定不超过6的正整数A&#xff0c;考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。 输入格式&#xff1a; 输入在一行中给出A。 输出格式&#xff1a; 输出满足条件的的3位数&#xff0c;要求从小到大&#xff0c;每行6个整数。整数间以空格分隔&#…

        JUnit学习之hamcrest、testSuite介绍及测试原则

        [转自] http://huihai.iteye.com/blog/1994270 上一节说了junit的一些基本概念&#xff0c;主要使用assert做一些基本的判断。但很多时候使用assert做判断&#xff0c;并不方便&#xff0c;如果要判断某几个值是否为true或false&#xff0c;这时使用hamcrest来判断就会方便许多…