zoukankan      html  css  js  c++  java
  • weblogic 10.x 上开发restful服务

    之前已经学习过 利用JAX-RS快速开发RESTful 服务,当时是jboss环境,如果原封不动的迁移到weblogic 10.x 版本,会杯具的发现应用启动失败,需要做些小调整:

    项目结构如下:

    需要在原来的Rest Service(本文中是MyService.java)外,再包装一层,创建一个Application的子类,本例中是 MyApplication.java,代码如下:

     1 package yjmyzz.service;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 import javax.ws.rs.ApplicationPath;
     7 import javax.ws.rs.core.Application;
     8 
     9 
    10 import yjmyzz.service.rest.MyService;
    11 
    12 @ApplicationPath("/rest")
    13 public class MyApplication extends Application {
    14 
    15     public Set<Class<?>> getClasses() {
    16         Set<Class<?>> s = new HashSet<Class<?>>();
    17         s.add(MyService.class);
    18         
    19         return s;
    20     }
    21 }
    MyApplication

    MyService.java的内容如下:(这与在jboss环境中的代码完全相同)

     1 package yjmyzz.service.rest;
     2 
     3 import javax.ws.rs.GET;
     4 
     5 import javax.ws.rs.Path;
     6 
     7 import javax.ws.rs.Produces;
     8 
     9 import javax.ws.rs.core.MediaType;
    10 import javax.xml.bind.JAXBElement;
    11 import javax.xml.namespace.QName;
    12 
    13 @Path("/")
    14 public class MyService {
    15 
    16     final String XMLNS_NAMESPACE = "http://yjmyzz.cnblogs.com/rest/service";
    17     final String ROOT_NODE = "root";
    18 
    19     @GET
    20     @Path("/json/hello")
    21     @Produces(MediaType.APPLICATION_JSON)
    22     public JAXBElement<String> getHelloWorldJSON() {
    23         JAXBElement<String> result = new JAXBElement<String>(new QName("",
    24                 ROOT_NODE), String.class, sayHelloWorld());
    25         return result;
    26     }
    27 
    28     @GET
    29     @Path("/xml/hello")
    30     @Produces(MediaType.APPLICATION_XML)
    31     public JAXBElement<String> getHelloWorldXML() {
    32         JAXBElement<String> result = new JAXBElement<String>(new QName(
    33                 XMLNS_NAMESPACE, ROOT_NODE), String.class, sayHelloWorld());
    34         return result;
    35     }
    36 
    37     private String sayHelloWorld() {
    38         return "Hello JAX-RS-1";
    39     }
    40 
    41 }
    MyService

    还有一个关键步骤:在webapp/WEB-INF目录下创建web.xml,内容参考如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "
     4     version="2.5">
     5 
     6     <servlet>
     7         <servlet-name>MyService</servlet-name>
     8         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
     9         <init-param>
    10             <param-name>javax.ws.rs.Application</param-name>
    11             <param-value>yjmyzz.service.MyApplication </param-value>
    12         </init-param>
    13     </servlet>
    14 
    15     <servlet-mapping>
    16         <servlet-name>MyService</servlet-name>
    17         <url-pattern>/rest/*</url-pattern>
    18     </servlet-mapping>
    19 
    20 </web-app>
    web.xml

    最后附上pom.xml的内容:

     1 <?xml version="1.0"?>
     2 
     3 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     5     <modelVersion>4.0.0</modelVersion>
     6 
     7     <groupId>org.jboss.as.quickstarts</groupId>
     8     <artifactId>helloworld-rs</artifactId>
     9     <version>7.1.2-SNAPSHOT</version>
    10     <packaging>war</packaging>
    11     <name>JBoss EAP Quickstart: helloworld-rs</name>
    12     <description>JBoss EAP Quickstart: Helloworld using JAX-RS</description>
    13 
    14     <properties>
    15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    16         <version.jboss.maven.plugin>7.4.Final</version.jboss.maven.plugin>
    17         <version.jboss.spec.javaee.6.0>3.0.2.Final</version.jboss.spec.javaee.6.0>
    18         <version.war.plugin>2.1.1</version.war.plugin>
    19         <maven.compiler.target>1.6</maven.compiler.target>
    20         <maven.compiler.source>1.6</maven.compiler.source>
    21     </properties>
    22 
    23     <dependencyManagement>
    24         <dependencies>
    25             <dependency>
    26                 <groupId>org.jboss.spec</groupId>
    27                 <artifactId>jboss-javaee-6.0</artifactId>
    28                 <version>${version.jboss.spec.javaee.6.0}</version>
    29                 <type>pom</type>
    30                 <scope>import</scope>
    31             </dependency>
    32         </dependencies>
    33     </dependencyManagement>
    34 
    35     <dependencies>
    36         <dependency>
    37             <groupId>com.sun.jersey</groupId>
    38             <artifactId>jersey-bundle</artifactId>
    39             <version>1.15</version>
    40         </dependency>
    41     </dependencies>
    42 
    43     <build>
    44         <finalName>${project.artifactId}</finalName>
    45         <plugins>
    46             <plugin>
    47                 <artifactId>maven-war-plugin</artifactId>
    48                 <version>${version.war.plugin}</version>
    49                 <configuration>
    50                     <failOnMissingWebXml>true</failOnMissingWebXml>
    51                 </configuration>
    52             </plugin>
    53 
    54             <plugin>
    55                 <groupId>org.jboss.as.plugins</groupId>
    56                 <artifactId>jboss-as-maven-plugin</artifactId>
    57                 <version>${version.jboss.maven.plugin}</version>
    58             </plugin>
    59         </plugins>
    60     </build>
    61 
    62 
    63 </project>
    pom.xml

    ok,打完收工!

    附示例源码下载:weblogic-rest-helloworld.zip

  • 相关阅读:
    输入函数
    pe结构讲解
    pe结构讲解
    小甲鱼pe结构讲解
    pe结构讲解
    pe结构讲解
    YUI3学习笔记 ( 7 )
    [转载 css]用CSS调整scrollbar(滚动条)的配色
    [转载 js]一次性解决png在i6下的透明问题(包括做为img和背景的两种情况)
    YUI3学习笔记 ( 7 )
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/rest-jax-rs-weblogic.html
Copyright © 2011-2022 走看看