zoukankan      html  css  js  c++  java
  • J2EE之wildfly 实践4 --SpringMvc 服务访问DAS服务

    wildfly 实践4 --SpringMvc 服务访问DAS服务

    注:此web服务部署在50.253机器上,即与DAS服务分开部署

     (转载请注明来源:cnblogs coder-fang)

    1.   wildfly 实践3 一样,创建maven 工程,如图:
    2. 修改pom文件,如下:
      <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/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>    
          <groupId>com.sanjian.wildfly</groupId>
          <artifactId>ticketui</artifactId>
          <version>0.1</version>
          <packaging>war</packaging>
          <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      
              <spring-version>4.1.0.RELEASE</spring-version>
          </properties>
          <dependencies>
              <dependency>
                  <groupId>com.sanjian.wildfly</groupId>
                  <artifactId>ticket-agency-db</artifactId>
                  <version>0.1</version>
              </dependency>
              <dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>servlet-api</artifactId>
                  <version>2.5</version>
                  <scope>provided</scope>
              </dependency>
              <!-- spring -->
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context</artifactId>
                  <version>${spring-version}</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-webmvc</artifactId>
                  <version>${spring-version}</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-context-support</artifactId>
                  <version>${spring-version}</version>
              </dependency>
              
              
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aop</artifactId>
                  <version>${spring-version}</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-aspects</artifactId>
                  <version>${spring-version}</version>
              </dependency>
      
              <dependency>
                  <groupId>org.springframework</groupId>
                  <artifactId>spring-test</artifactId>
                  <version>4.1.4.RELEASE</version>
              </dependency>
      
      
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-core</artifactId>
                  <version>2.8.1</version>
              </dependency>
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-databind</artifactId>
                  <version>2.1.0</version>
              </dependency>
              <dependency>
                  <groupId>com.fasterxml.jackson.core</groupId>
                  <artifactId>jackson-annotations</artifactId>
                  <version>2.1.0</version>
              </dependency>
      
              <dependency>
                  <groupId>org.codehaus.jackson</groupId>
                  <artifactId>jackson-core-lgpl</artifactId>
                  <version>1.9.6</version>
              </dependency>
              <dependency>
                  <groupId>org.codehaus.jackson</groupId>
                  <artifactId>jackson-core-asl</artifactId>
                  <version>1.9.4</version>
              </dependency>
              <dependency>
                  <groupId>org.codehaus.jackson</groupId>
                  <artifactId>jackson-mapper-asl</artifactId>
                  <version>1.9.5</version>
              </dependency>
              <dependency>
                  <groupId>org.codehaus.jackson</groupId>
                  <artifactId>jackson-mapper-lgpl</artifactId>
                  <version>1.9.6</version>
              </dependency>
              
              <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
              <dependency>
                  <groupId>commons-fileupload</groupId>
                  <artifactId>commons-fileupload</artifactId>
                  <version>1.3.2</version>
              </dependency>
              
              <!-- EJB -->
              
      
              <dependency>
                  <groupId>org.jboss.spec.javax.transaction</groupId>
                  <artifactId>jboss-transaction-api_1.2_spec</artifactId>
                  <version>1.0.0.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.jboss.spec.javax.ejb</groupId>
                  <artifactId>jboss-ejb-api_3.2_spec</artifactId>
                  <version>1.0.0.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.jboss</groupId>
                  <artifactId>jboss-ejb-client</artifactId>
                  <version>2.0.1.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.jboss.xnio</groupId>
                  <artifactId>xnio-api</artifactId>
                  <version>3.2.2.Final</version>
              </dependency>
              <dependency>
                  <groupId>org.jboss.xnio</groupId>
                  <artifactId>xnio-nio</artifactId>
                  <version>3.2.2.Final</version>
      
                  
              </dependency>
              <dependency>
                  <groupId>org.jboss.remoting3</groupId>
                  <artifactId>jboss-remoting</artifactId>
                  <version>3.3.3.Final</version>            
              </dependency>
              <dependency>  
                  <groupId>jboss</groupId>  
                  <artifactId>jnp-client</artifactId>  
                  <version>4.2.2.GA</version>  
              </dependency>  
              
              <dependency>
                  <groupId>org.jboss.sasl</groupId>
                  <artifactId>jboss-sasl</artifactId>
                  <version>1.0.4.Final</version>            
              </dependency>
              <dependency>
                  <groupId>org.jboss.marshalling</groupId>
                  <artifactId>jboss-marshalling-river</artifactId>
                  <version>1.4.2.Final</version>
              </dependency>
                       
          </dependencies>
          <!-- spring end -->
          <build>
              <finalName>${project.artifactId}</finalName>
              <plugins>
                  <plugin>
                      <groupId>org.wildfly.plugins</groupId>
                      <artifactId>wildfly-maven-plugin</artifactId>
                      <version>1.0.2.Final</version>
                      <configuration>
                          <filename>${project.build.finalName}.war</filename>
                      </configuration>
                  </plugin>
                  <plugin>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-compiler-plugin</artifactId>
                      <version>3.1</version>
                      <configuration>
                          <source>1.8</source>
                          <target>1.8</target>
                      </configuration>
                  </plugin>
      
              </plugins>
          </build>
      </project>
      View Code
    3. 在WEB-INF下创建相关配置文件,目录如下:
    4.   web.xml配置如下:
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
        <display-name>ticket ui</display-name>
        <context-param>
          <param-name>webAppRootKey</param-name>
          <param-value>webapp.root</param-value>
        </context-param>  
        <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
                  /WEB-INF/applicationContext.xml
              </param-value>
        </context-param>
        <context-param>
          <param-name>spring.profiles.default</param-name>
          <param-value>production</param-value>
        </context-param>
        <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <servlet>
          <servlet-name>restappServlet</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/servlet-context.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
          <servlet-name>restappServlet</servlet-name>
          <url-pattern>/</url-pattern>
        </servlet-mapping>
        <filter>
          <filter-name>characterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
          </init-param>
          <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
          </init-param>
        </filter>
        <filter-mapping>
          <filter-name>characterEncodingFilter</filter-name>
          <url-pattern>/*</url-pattern>
        </filter-mapping>
      
      </web-app>
      View Code
    5. servlet-context.xml配置如下:
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
          xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
          xmlns:task="http://www.springframework.org/schema/task" xmlns:aop="http://www.springframework.org/schema/aop"
          xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
          http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
          http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-3.0.xsd 
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  ">
      
          <mvc:annotation-driven />
            <context:component-scan base-package="com.ticket.controller" /> 
      
      
      
          <bean
              class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
          <bean id="defaultAnnotationHandlerMapping"
              class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
      
          <bean id="annotationMethodHandlerAdapter"
              class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
              <property name="messageConverters">
                  <list>
                      <bean
                          class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
                      <bean
                          class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
                      <bean
                          class="org.springframework.http.converter.StringHttpMessageConverter">
                          <property name="supportedMediaTypes">
                              <list>
                                  <value>text/html;charset=utf-8</value>
                                  <value>text/xml</value>
                                  <value>text/plain</value>
                              </list>
                          </property>
                      </bean>
                      <bean id="mappingJacksonHttpMessageConverter"
                          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                          <property name="supportedMediaTypes">
                              <list>
                                  <value>application/json;charset=UTF-8</value>
                              </list>
                          </property>
                      </bean>
                  </list>
              </property>
          </bean>
          <!-- 配置文件上传解析器 -->
          <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
              <property name="defaultEncoding" value="utf-8" />
              <property name="maxUploadSize" value="10485760" />
              <property name="maxInMemorySize" value="40960" />
               <!--resolveLazily属性启用是为了推迟文件解析,以便在UploadAction 中捕获文件大小异常-->  
              <property name="resolveLazily" value="true"/>    
          </bean>
      </beans>
      View Code
    6. applicationContext.xml配置如下,此处为预留配置,还未加相关bean:
      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
          xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
          xmlns:task="http://www.springframework.org/schema/task" xmlns:aop="http://www.springframework.org/schema/aop"
          xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
          http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
          http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
          http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-3.0.xsd 
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  ">
      
      </beans>
    7. jboss-ejb-client.xml配置如下:
      <jboss-ejb-client xmlns="urn:jboss:ejb-client:1.0">
          <client-context>
              <ejb-receivers>
                  <remoting-ejb-receiver outbound-connection-ref="remote-ejb-connection"/>
              </ejb-receivers>
          </client-context>
      </jboss-ejb-client>
    8. 创建 com.ticket.controller.MainController,代码片段如下:
      @Controller
      @RequestMapping(value = "/")
      public class MainControll{
          private static final Logger logger = Logger.getLogger("MainControll");
          private static Context ctx;
          
          private SiteManagerRemote siteRemote;
      @PostConstruct
          public void setup() throws NamingException{
              try {
                  
                  MainControll.ctx = new InitialContext();
                  siteRemote = (SiteManagerRemote) ctx.lookup("ejb:/ticket-agency-db//SiteManager!com.sanjian.boundary.SiteManagerRemote");
      }
      catch(Exception e){
      }}
      
      @RequestMapping(value = "/show/{status}",method=RequestMethod.GET)    
          @ResponseBody
          public Object showSeats(HttpSession session,@PathVariable int status) {
              
              HashMap<String, Object> ret = new HashMap<String, Object>();
              
              try {
                  
                  
                  
                  QueryResult<Site> st = siteRemote.listSites(status);
                  
                  //siteRemote.saveSite(s,p);
                  ret.put("data", st.getResultlist());
                  ret.put("total", st.getTotalrecord());
                  
      
          
              } catch (Exception e) {
                  
                  e.printStackTrace();
                  ret.put("error", e.getMessage());
              }
      
              return ret;
          }
      
      }
      View Code
    9. 运行Run->RunConfiguration,如图:
    10. 确保本机(50.253)中的wildfly 已运行,点击上图中的Run按钮。
    11. 成功的代码片段如下:
      [INFO] Scanning for projects...
      [INFO]                                                                         
      [INFO] ------------------------------------------------------------------------
      [INFO] Building ticketui 0.1
      [INFO] ------------------------------------------------------------------------
      [INFO] 
      [INFO] >>> wildfly-maven-plugin:1.0.2.Final:deploy (default-cli) > package @ ticketui >>>
      [INFO] 
      [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ticketui ---
      [INFO] Using 'UTF-8' encoding to copy filtered resources.
      [INFO] Copying 0 resource
      [INFO] 
      [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ticketui ---
      [INFO] Changes detected - recompiling the module!
      [INFO] Compiling 2 source files to E:StudyCodeWorkSpace	icket-agency	icket-agency-ui	argetclasses
      [WARNING] /E:/StudyCode/WorkSpace/ticket-agency/ticket-agency-ui/src/main/java/com/ticket/controller/MainControll.java: E:StudyCodeWorkSpace	icket-agency	icket-agency-uisrcmainjavacom	icketcontrollerMainControll.java使用了未经检查或不安全的操作。
      [WARNING] /E:/StudyCode/WorkSpace/ticket-agency/ticket-agency-ui/src/main/java/com/ticket/controller/MainControll.java: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
      [INFO] 
      [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ticketui ---
      [INFO] Using 'UTF-8' encoding to copy filtered resources.
      [INFO] Copying 0 resource
      [INFO] 
      [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ ticketui ---
      [INFO] Nothing to compile - all classes are up to date
      [INFO] 
      [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ticketui ---
      [INFO] 
      [INFO] --- maven-war-plugin:2.2:war (default-war) @ ticketui ---
      [INFO] Packaging webapp
      [INFO] Assembling webapp [ticketui] in [E:StudyCodeWorkSpace	icket-agency	icket-agency-ui	argetticketui]
      [INFO] Processing war project
      [INFO] Copying webapp resources [E:StudyCodeWorkSpace	icket-agency	icket-agency-uisrcmainwebapp]
      [INFO] Webapp assembled in [420 msecs]
      [INFO] Building war: E:StudyCodeWorkSpace	icket-agency	icket-agency-ui	arget	icketui.war
      [INFO] WEB-INFweb.xml already added, skipping
      [INFO] 
      [INFO] <<< wildfly-maven-plugin:1.0.2.Final:deploy (default-cli) < package @ ticketui <<<
      [INFO] 
      [INFO] --- wildfly-maven-plugin:1.0.2.Final:deploy (default-cli) @ ticketui ---
      十二月 13, 2016 4:36:14 下午 org.xnio.Xnio <clinit>
      INFO: XNIO version 3.2.2.Final
      十二月 13, 2016 4:36:14 下午 org.xnio.nio.NioXnio <clinit>
      INFO: XNIO NIO Implementation Version 3.2.2.Final
      十二月 13, 2016 4:36:14 下午 org.jboss.remoting3.EndpointImpl <clinit>
      INFO: JBoss Remoting version 4.0.3.Final
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      [INFO] Total time: 12.776 s
      [INFO] Finished at: 2016-12-13T16:36:21+08:00
      [INFO] Final Memory: 24M/204M
      [INFO] ------------------------------------------------------------------------
      View Code
    12. 打开浏览器,输入 http://localhost:8080/ticketui/show/2,则显示出从数据库读取出的json文本。

     阶段总结:至此 WEB服务访问EJB服务的实践已完成,项目较大的话业务服务也可完全独立出SessionBean,如果同学们无法完成,则大部分可能的问题都是配置问题,分布式的业务服务大体流程即为如此,文笔不好,谅解。

  • 相关阅读:
    KL散度(相对熵)和交叉熵的区别
    将模型从 PyTorch 导出到 ONNX 并使用 ONNX Runtime 运行
    Numpy Boolean Indexing Mask(Numpy 布尔索引掩码 )
    python PIL 图像处理库(Pillow)简介
    YOLO v3 网络结构和源码详解
    PyTorch 下使用 Tensorboard
    Python vars() 函数
    python 的 Tqdm 模块
    Pytorch 中的模式设置:model.eval() 和 model.train()
    Pytorch 中的 zero_grad 使用方法
  • 原文地址:https://www.cnblogs.com/coder-fang/p/6170552.html
Copyright © 2011-2022 走看看