weblogic 10.x 上开发restful服务

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

项目结构如下:

weblogic 10.x 上开发restful服务_第1张图片

需要在原来的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> getClasses() {
16         Set> s = new HashSet>();
17         s.add(MyService.class);
18         
19         return s;
20     }
21 }
复制代码

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 getHelloWorldJSON() {
23         JAXBElement result = new JAXBElement(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 getHelloWorldXML() {
32         JAXBElement result = new JAXBElement(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 }
复制代码

还有一个关键步骤:在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>MyServiceservlet-name>
 8         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainerservlet-class>
 9         <init-param>
10             <param-name>javax.ws.rs.Applicationparam-name>
11             <param-value>yjmyzz.service.MyApplication param-value>
12         init-param>
13     servlet>
14 
15     <servlet-mapping>
16         <servlet-name>MyServiceservlet-name>
17         <url-pattern>/rest/*url-pattern>
18     servlet-mapping>
19 
20 web-app>
复制代码

最后附上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.0modelVersion>
 6 
 7     <groupId>org.jboss.as.quickstartsgroupId>
 8     <artifactId>helloworld-rsartifactId>
 9     <version>7.1.2-SNAPSHOTversion>
10     <packaging>warpackaging>
11     <name>JBoss EAP Quickstart: helloworld-rsname>
12     <description>JBoss EAP Quickstart: Helloworld using JAX-RSdescription>
13 
14     <properties>
15         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
16         <version.jboss.maven.plugin>7.4.Finalversion.jboss.maven.plugin>
17         <version.jboss.spec.javaee.6.0>3.0.2.Finalversion.jboss.spec.javaee.6.0>
18         <version.war.plugin>2.1.1version.war.plugin>
19         <maven.compiler.target>1.6maven.compiler.target>
20         <maven.compiler.source>1.6maven.compiler.source>
21     properties>
22 
23     <dependencyManagement>
24         <dependencies>
25             <dependency>
26                 <groupId>org.jboss.specgroupId>
27                 <artifactId>jboss-javaee-6.0artifactId>
28                 <version>${version.jboss.spec.javaee.6.0}version>
29                 <type>pomtype>
30                 <scope>importscope>
31             dependency>
32         dependencies>
33     dependencyManagement>
34 
35     <dependencies>
36         <dependency>
37             <groupId>com.sun.jerseygroupId>
38             <artifactId>jersey-bundleartifactId>
39             <version>1.15version>
40         dependency>
41     dependencies>
42 
43     <build>
44         <finalName>${project.artifactId}finalName>
45         <plugins>
46             <plugin>
47                 <artifactId>maven-war-pluginartifactId>
48                 <version>${version.war.plugin}version>
49                 <configuration>
50                     <failOnMissingWebXml>truefailOnMissingWebXml>
51                 configuration>
52             plugin>
53 
54             <plugin>
55                 <groupId>org.jboss.as.pluginsgroupId>
56                 <artifactId>jboss-as-maven-pluginartifactId>
57                 <version>${version.jboss.maven.plugin}version>
58             plugin>
59         plugins>
60     build>
61 
62 
63 project>
复制代码

ok,打完收工!

http://www.cnblogs.com/yjmyzz/p/rest-jax-rs-weblogic.html


复制代码
 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>MyServiceservlet-name>
 8         <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainerservlet-class>
 9         <init-param>
10             <param-name>javax.ws.rs.Applicationparam-name>
11             <param-value>yjmyzz.service.MyApplication param-value>
12         init-param>
13     servlet>
14 
15     <servlet-mapping>
16         <servlet-name>MyServiceservlet-name>
17         <url-pattern>/rest/*url-pattern>
18     servlet-mapping>
19 
20 web-app>
复制代码

你可能感兴趣的:(java)